使用 TestNG 对 JavaFx 2 应用程序进行单元测试

2024-01-20

我编写了一个相当复杂的 JavaFx 2 应用程序,我想为其编写一堆单元测试。问题是,当我尝试进行测试时,我收到运行时错误,抱怨未初始化的工具包。

据我所知,我应该以某种方式在 @BeforeClass 方法中调用 Application.launch() ,但这会导致死锁,因为 Application.launch() 不会返回调用线程。

所以问题是我应该如何初始化JavaFx?

这是不起作用的代码的骨架:

public class AppTest extends Application {

    @BeforeClass
    public void initialize() {
        launch(); //this causes a deadlock
    }

    @Test
    public void test1() {
        //conduct test here
    }

    @Test
    public void test2() {
        //conduct other test here
    }

    @Override
    public void start(Stage arg0) throws Exception {
    }

提前致谢!


From 另一个问题 https://stackoverflow.com/questions/11385604/how-do-you-unit-test-a-javafx-controller-with-junit在 stackoverflow 上,我为自己创建了这个小助手类:

import javafx.application.Application;
import javafx.stage.Stage;

public class JavaFXInitializer extends Application {

    private static Object barrier = new Object();

    @Override
    public void start(Stage primaryStage) throws Exception {
        synchronized(barrier) {
            barrier.notify();
        }
    }

    public static void initialize() throws InterruptedException {
        Thread t = new Thread("JavaFX Init Thread") {
            public void run() {
                Application.launch(JavaFXInitializer.class, new String[0]);
            }
        };
        t.setDaemon(true);
        t.start();      
        synchronized(barrier) {
            barrier.wait();
        }
    }
}

然后可以在 @BeforeClass 设置方法中轻松使用它:

@BeforeClass
public void setup() throws InterruptedException {
    JavaFXInitializer.initialize();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TestNG 对 JavaFx 2 应用程序进行单元测试 的相关文章

  • 通过鼻子测试检查某个函数是否发出警告

    我正在使用编写单元测试nose http somethingaboutorange com mrl projects nose 0 11 2 我想检查函数是否引发警告 该函数使用warnings warn 这是很容易就能做到的事情吗 def
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task
  • JavaFX 中的内部框架

    我找到了这个内部框架的例子 http docs oracle com javase tutorial uiswing components internalframe html http docs oracle com javase tut
  • 对打开文件的脚本进行单元测试

    我编写了一个脚本 它打开一个文件 读取内容并进行一些操作和计算 并将它们存储在集合和字典中 我该如何为这样的事情编写单元测试 我的问题具体是 我会测试文件是否打开 文件很大 这是unix字典文件 我如何对计算进行单元测试 我真的必须手动计算
  • 使用 Jasmine 模拟 jQuery ajax 调用

    我正在使用 Jasmine 2 5 2 为使用 jQuery 3 1 1 执行 Ajax 请求的代码编写单元测试 我想模拟 Ajax 调用 提供我自己的响应状态和文本 我正在使用 Jasmine ajax 插件 https github c
  • 消除“集成测试骗局” - 了解协作和合同测试

    我最近看过集成测试是一个骗局 http www infoq com presentations integration tests scam由 J B Rainsberger 撰写 现在正在寻找有关该主题的更多材料 我不得不说 我对我们做错
  • 如何从 VS2013 为基于 ADO.Net 的存储库编写单元测试代码

    我在单元测试领域很新 那么请指导我如何在控制器内为基于 ADO Net 的存储库和操作方法编写单元测试 我将使用 VS 自己的单元测试框架 所以请看代码并告诉我哪些类和函数需要经过单元测试 如果有人告诉我哪些区域需要单元测试以及哪些区域不需
  • R testthat 单元测试数据和辅助函数约定

    我正在编写一个 R 包 并使用 testthat 进行单元测试 我的许多单元测试都是为了测试适用于我的包特定对象的功能 对于这些测试 我创建了一个辅助函数来设置模拟对象 我还有一些其他辅助函数来减少单元测试中的代码量 目前这些辅助函数在我的
  • xCode 7.1 中警报的 UITesting

    我正在 xCode 7 1 中编写 UITests 并且在测试警报时遇到问题 在我的情况下允许通知 创建测试时 xCode 会写入以下代码 app alerts U201cAppName U201d Would Like to Send Y
  • 在 Protractor / Webdriver 中等待页面重定向

    我有一个测试 单击按钮并重定向到用户仪表板 当发生这种情况时 Webdriver 返回 javascript error document unloaded while waiting for result 为了解决这个问题 我插入brow
  • Mockito mockStatic 无法解析符号

    我正在使用 Spring Boot 并在单元测试中 我试图模拟Files delete myFile toPath method 为此 我尝试使用Mockito mockStatic 方法 但是当我尝试使用它时 我的 IDE Intelli
  • 使用 Laravel dusk 仅迁移一次

    根据到 数据库测试 文档 https laravel com docs 5 4 database testing resetting the database after each test我可以在每次测试后重置数据库 第一个选项 第二个选
  • 莫基托。验证方法参数是特定类

    我有一个方法 void putObject
  • Xcode 6.4 Swift 单元测试无法编译:“GPUImage.h 未找到”“无法导入桥接标头”

    我的 Xcode 项目构建并运行良好 它有 Swift 和 Objective C 代码 它已安装 GPUImage 我向它添加了单元测试 现在它将不再编译 找不到 GPUImage h 文件 导入桥接标头失败 以下是我发现并尝试过的解决方
  • 用嘲笑测试 Laravel 外观总是会通过,即使它应该失败

    我试图在单元测试期间模拟 Laravel 中的一些外观 但似乎无论如何测试总是会通过 例如 此示例取自 Laravel 文档 Event shouldReceive fire gt once gt with foo array name g
  • 单元测试时静态元模型属性为 null

    我在外部包中有 Entity 类 这些类也有静态元模型 在我的应用程序的服务类中 我使用这些元模型和 EntityManager CriteriaBuilder CriteriaQuery 来检索我的数据 这在运行应用程序时工作得很好 但是
  • 在 Angular 单元测试中应该如何处理运行块?

    我的理解是 当您在 Angular 单元测试中加载模块时 run块被调用 我认为如果你正在测试一个组件 你不会想同时测试run块 因为unit测试应该只是测试一个unit 真的吗 如果是的话有什么办法可以防止run阻止运行 我的研究让我认为
  • 在 Android 中跨单元测试和仪器测试共享资源

    现在谷歌已经添加了实验单元测试支持 http tools android com tech docs unit testing support 如何在单元测试和仪器测试之间共享资源 例如 假设我有一个TestUtils java我希望在单元
  • Mockito 使用 @Mock 时将 Null 值注入到 Spring bean 中?

    由于我是 Spring Test MVC 的新手 我不明白这个问题 我从以下代码中获取了http markchensblog blogspot in search label Spring http markchensblog blogsp

随机推荐

  • Java 中可以获取变量之前的值吗?

    假设有一个变量 假设为 String Str 并且 Str 的值以 开头 然后当某些代码运行时 它被设置为 test 然后在代码中的其他地方再次更改为 tester 现在在程序中我想找出 Str 之前的值是多少 这在Java中可能吗 所以我
  • “activity.onCreate()”方法被多次调用是否正常

    我在 Activity 的 onCreate 方法中有一些代码 并注意到它被调用了三次 这是正常行为吗 谢谢 您可能想阅读有关的文档活动生命周期 https developer android com reference android a
  • 为什么我无法复制 NumPy v1.13.dev0 手动示例

    作为一个例子 我正在阅读以下内容 https docs scipy org doc numpy dev neps new iterator ufunc html https docs scipy org doc numpy dev neps
  • 在 iFrame 中使用 jQuery 不起作用

    我在 iFrame 中使用 jQuery 时遇到问题 这是我的测试设置 索引 html
  • Chrome JavaScript 调试器中的“Just My Code”

    有没有办法强制 Chrome 的调试器在单步执行代码时跳过特定的源文件或函数 现在 Chrome 开发者工具中提供了 框架黑盒 功能 https developer chrome com devtools docs blackboxing
  • Moq 中的单元测试 Mock/Stub 定义

    我所得到的关于单元测试的任何阅读或建议总是表明模拟和存根的定义之间存在明显的差异 我目前对这些定义的理解如下 Mock 一个假的 将用于 您的测试做出最终断言 存根 一个假的 将用于 你的测试是为了隔离依赖关系 但是 不被断言 然而 Moq
  • 输入 jqplot 饼图时工具提示有效,但在从一个切片移动到另一个切片时则无效(仅 Firefox 受影响)

    当 从外部 输入饼图时 工具提示工作正常 但切片之间的过渡会导致工具提示消失并且不会创建新的工具提示 这是我的jsfiddle 片段 http jsfiddle net LqB3f 14 密切基于有用的建议这个答案 https stacko
  • 如何在 Eclipse 中导入和导出键盘绑定? [复制]

    这个问题在这里已经有答案了 可能的重复 eclipse 按键绑定设置 https stackoverflow com questions 481073 eclipse keybindings settings 如何在 Eclipse 中导入
  • VBA 中转到 <行号>

    来自 VBA 帮助文件 转到语句 无条件分支到过程中的指定行 Syntax GoTo line 所需line参数可以是任何行标签或行号 Remarks GoTo只能分支到它出现的过程中的行 我的问题是 如何使用跳转到行号GoTo 我知道如何
  • 从字符串解析日期时间时遇到问题

    我目前正在尝试解析从每隔几分钟从网络下载的 xml 中获取的字符串 该字符串如下所示 Thu Jul 12 08 39 56 GMT 0100 2012 起初我只是做了一个string split并在时间结束后取出所有东西 GMT 0100
  • 使用 javascript 以编程方式创建 SVG 图像元素

    就像我的标题所说 我正在尝试使用 JavaScript 在 HTML 页面中以编程方式创建 SVG 图像元素 由于某种原因 我的基本 javascript 代码无法正常工作 但是如果我使用 raphaeljs 库 它就可以正常工作 所以我的
  • 配置系统无法初始化 - Windows Service .NET

    我创建了一个 NET Windows 服务 在开发计算机上安装时没有任何问题 在只有 NET框架 并且没有安装VS 的服务器上 由于我没有VS 2008提示符 所以我执行了以下操作 我打开命令提示符 I did cd C WINDOWS M
  • docker image: openjdk:15: 如何在其中安装 python

    我想创建openjdk15和python的镜像 我正在尝试使用 Dockerfile 进行构建 FROM openjdk 15 RUN yum install y oracle epel release el7 RUN yum instal
  • Web 应用程序 ASP.NET MVC 的调度程序 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我通过 ASP NET MVC 构建了一个网站应用程序 可以帮助用户获取 RSS 新闻 当然 它工作得很好 但是 我想扩展一个功能 例
  • iOS 11 文件应用程序:如何包含应用程序包中的文件

    我观看了keynote https www apple com apple events june 2017 今年的 WWDC 上 我对 iOS 11 中新增的所有新功能感到非常兴奋 Apple 对 App Store 中游戏的高度重视以及
  • 如何从 Owin 管道中获取 ApplicationDbContext

    这一定很简单 但我正在努力寻找答案 控制器操作如何获取对存储在 Owin 管道中的每个请求 ApplicationDbContext 的引用 编辑 好吧 我想我越来越接近了 或者也许不是 我所有的谷歌搜索似乎都会导致这篇博文 http bl
  • 在 dplyr 中使用带有 udf 的标准评估

    我正在使用 dplyr 进行编程 因此我正在使用标准评估 我创建了一个通用函数 以数据框和列名作为参数 在该函数中 我想应用我自己在数据框列上编写的另一个函数 这是一个最小的例子 some udf lt function x mean x
  • Spring MVC 映射 Guava Multimap

    我的控制器无法映射 Google GuavaMultimap来自前端 我从我的 Javascript 发送这个对象 1 true false 2 false true 如果我使用一个标准 java util Map
  • R,抑制曲线函数的绘图

    当在R中使用 曲线 函数时 如何抑制 停止绘图的显示 例如 此代码总是绘制曲线 my curve curve x 是否有一个参数可以执行此操作 或者我应该使用不同的函数 我只想将 x y 点作为曲线的数据框 curve 来自图形库 对于生成
  • 使用 TestNG 对 JavaFx 2 应用程序进行单元测试

    我编写了一个相当复杂的 JavaFx 2 应用程序 我想为其编写一堆单元测试 问题是 当我尝试进行测试时 我收到运行时错误 抱怨未初始化的工具包 据我所知 我应该以某种方式在 BeforeClass 方法中调用 Application la