问题标签 [testfx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4164 浏览

java - 简单的 TestFX 示例失败

在 Eclipse photon 和 fx9 或 fx11(没关系)中使用 TestFX 4.0.14,来自 TestFX wiki 的简单示例测试失败should_click_on_button()

查看屏幕时,会显示窗格及其包含的按钮,但鼠标会移动到其他位置:因此该按钮永远不会被单击,因此其文本永远不会改变。

知道出了什么问题/如何解决吗?

测试代码(为方便起见,全部从 wiki 复制):

申请代码:


更新:

TestFX中发现了一个可能匹配的未解决问题。它提到了可能是原因的核心 fx 错误- 但似乎不是:它已在 fx11 中修复(已验证核心错误报告中的代码通过),但 testfx 问题占主导地位..

0 投票
1 回答
203 浏览

javafx - 在 TableView 中访问 TableRow 的样式数据

我正在尝试编写一些 TestFX 代码,这些代码将循环通过 TableView 组件并检查每行的背景颜色是否设置正确。

我无法解决的是如何实际构建循环以通过 TableRows 而不是实际数据。我试过使用sourceTable.getItems(),但这只是让我可以访问包含数据的对象。但我需要比这更低,并实际检查 CSS 标记的背景颜色。

我知道 TableRow 有一个 getStyle 函数,它将返回我正在寻找的数据,但我不知道如何构建将遍历每一行的适当迭代。

0 投票
1 回答
872 浏览

java - 将 TestFX 与 Cucumber 一起使用

我正在尝试将 Cucumber 与 TestFX 一起使用,但无法从应用程序中获取任何节点。

我有另一类 TestFX 可以正常工作,另一类 Cucumber 也可以正常工作。但我越来越

org.loadui.testfx.exceptions.NoNodesFoundException:没有节点匹配'TextInputControl 有文本“你能找到这个标签吗”'。

测试基础:

这是我的 testfx 基类,我的黄瓜跑步者和 stepdefs 扩展了它。

StepDefs:

亚军:

特征:

特征:标签文本是否存在?

场景:你能找到这个标签文本吗

鉴于“你能找到这个标签吗”存在

那么哪个是“伟大的”

因此,参数已传递,但 TestFX 并未在我的黄瓜运行器中启动应用程序,只是尝试查找节点。有一个类扩展了 TestFXBase 并且可以完美运行。我该如何解决这个问题?

编辑:我的依赖是

0 投票
1 回答
1772 浏览

java - TestFX clickOn() 在组合框/选择框上的特定文本上

我是使用 fxrobot (javafx) 进行 TestFX GUI 测试的新手。

我当前的任务是在使用组合框创建的下拉菜单上单击一个选项。我没有找到任何提到这个问题的教程。

真的可以实现 clickOn() 方法在组合框/下拉菜单中选择文本吗?有一个例子怎么做吗?

太感谢了!

0 投票
1 回答
407 浏览

testing - 在 testfx 中启用失败测试的屏幕截图功能

我目前正在使用TestFX为 JavaFX 应用程序构建测试,它具有以下版本:

  • testfx-core 4.0.1-alpha
  • testfx-junit 4.0.1-alpha

没有太多关于如何为失败的测试启用截屏功能的信息,如果默认情况下启用它,它们存储在哪里?

0 投票
0 回答
67 浏览

kotlin - TestFX:有没有办法在舞台中包含一个模态实例?

我一直在尝试使用 TestFX 编写测试以检查是否打开了模式,但找不到任何方法来执行此操作。

下面是单击按钮时具有 openModal() 的视图

}

这是TestFX代码

当测试代码运行 clickButtonToOpenModal() 时,会导致以下错误。

kotlin.KotlinNullPointerException

我认为我必须以某种方式将 LoginForm 的实例添加到 primaryStage,但我找不到包含或添加 openModal() 实例的方法。

0 投票
1 回答
443 浏览

java - 每次测试后如何启动应用程序 Junit5 TestFX

我正在使用 Junit5 和 TestFX 编写应用程序测试。我的意图是主测试类在每次测试后重新启动应用程序。据我所知,我将使用注释@BeforeEach,它对我不起作用。

这是我的测试课:

问题是:如何在每次测试后重新启动应用程序?

0 投票
0 回答
310 浏览

java - 我应该如何对 JavaFX 程序的主要方法进行单元测试?

现在,我正在考虑将 100% 的代码覆盖率纳入我的项目中。但是,我在对代码的主要入口点进行单元测试时遇到了问题:

这种方法很难测试,因为它会在后台启动一个全新的 JavaFX 程序。除此行为外,JavaFX 程序不能多次启动。此外,javafx.application.Application 的文档明确指出,“JavaFX 应用程序不应在 FX 工具包终止或从 ShutdownHook 终止后(即stop()方法返回或被System.exit(int)调用后)尝试使用 JavaFX。”

我遇到这个项目是因为我也在使用TestFX,这是一个有助于对 JavaFX 进行干净测试的库。但是,这个库不支持 main 方法的测试,因此我必须编写一个解决方法。TestFX 的开发人员有可能知道此问题的可能解决方法,对于每个单元测试方法,Application都会启动一个新的实例。也许有一种方法可以完全关闭并重置 JavaFX 程序的所有变量。

公平地说,这种方法对测试没有那么重要,但是拥有 100% 的代码覆盖率会很令人愉快。不测试这种方法也是完全合理的。完整的课程可以在下面找到:

上面的静态变量与上述问题无关,用于在另一个类中进行测试,以确保委托正常工作。应用程序将大部分操作委托给委托类,这使得代码更易于测试。

此外,IntelliJ 不允许在代码测试期间排除方法。 如果您有任何其他问题,请告诉我。谢谢!

一些额外的阅读:

  1. 如何在java中多次调用launch()
  2. https://github.com/TestFX/TestFX/blob/master/subprojects/testfx-core/src/main/java/org/testfx/api/FxToolkit.java
0 投票
0 回答
375 浏览

javafx - 如何引用 TestFX 中的顶级节点?

刚开始使用 TestFX,我想知道如何引用顶部Node(即Stage)。

在这里我看到它说

所有 TestFX 测试都应在编写测试时使用 verifyThat(Node, Matcher, Function),以便开发人员可以使用 DebugUtils 提供有关测试失败原因的附加信息。

这是一个有用的指针......所以说我想说验证“JavaFX 对话框/窗口至少有 600 像素宽,至多 400 像素高”?

请注意,我正在使用 org.junit 方法,因为 TestFX github 站点上的示例似乎如此。实际上,我是 Groovy 的粉丝,并希望不久之后切换到 Spock TestFX 实现。

NB2 在我看来,获取Stage测试代码的一种方法是制作Stage被测类的 a 字段:

...但不知何故,这感觉做事的方式是错误的:如果Stage作为参数传递,start感觉就像设计者不希望你为它创建一个类字段。

0 投票
1 回答
959 浏览

java - 使用 mockito 在 TestFx 中模拟 FileChooser

我试图测试是否在 FileChooser 内部选择了一个文件并将其作为字符串写入 TextField。

我正在使用:testfx 4.0.4-alpha mockito 2.1.0

我在网上找到了这个: https ://gitter.im/TestFX/TestFX/archives/2017/10/05

模拟 FileChooser:

我的测试:

当我运行测试时它失败了。