问题标签 [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.
java - TestFX 中是否有测试选择框选择的功能?
我想用 TestFX 测试我编写的 JavaFX GUI。在一个步骤中,我想测试一些选择框。
到目前为止,我已经尝试了以下代码:
但是,这将导致以下错误消息:
我知道我正在使用 ComboBox Matcher,但我之前尝试过其他选项,但也没有用。ChoiceBox 有类似的 Matcher 吗?
java - TestFX:输入后测试TextArea是否包含某些文本
我想在输入某个文本后测试 TextArea 是否有此文本。我使用以下代码,但收到错误消息。
测试代码:
错误信息:
ControlValidationTextArea
是一个具有更多功能的 TextArea。
gradle - TestFX Spock Gradle 项目 Openjdk 11 - 零测试结果
为什么我的 Spock 测试没有执行并且我在执行时得到零测试结果:
与我的Openjdk 11的TestFX Spock Gradle 项目?
我的 Spock 测试类编译正常但未执行。
这是我的控制台:
这是我的build.gradle:
这是我的module-info.java:
这是我的Spock 测试代码:
这是我的JavaFX 代码:
和控制器:
这是我的eclipse gradle 项目结构:
在其他 eclipse gradle 项目中,我已经成功执行了没有 Spock的TestFX Junit4测试:
并且分别我已经成功地执行了相同的Spock 测试,没有 TestFX和没有 JUnit:
我确实注意到这个 Spock 测试的一些警告:
结论
如果带有 JUnit 的 TestFX 可以工作,而 Spock 单独可以工作,但是带有 Spock 的 TestFX 不起作用,那么配置是否有问题:
非常感谢任何想法或帮助。
ps 忘了说我也在Netbeans中创建了TestFX/Spock项目,复制了eclipse项目,得到了同样的结果!
更多测试
不幸的是,下面评论中的伦纳德·布鲁宁斯非常好的建议之后的更多测试组合没有奏效。
我修改后的 module-info.java 看起来像:
我将此添加到我的 gradle.build 依赖项中以防万一:
还是不开心...
java - 如何让testfx在测试中找到根的fx:id(根是自定义控件)
我知道我加载应用程序的方式可能很奇怪,但我不明白为什么 testfx 套件会为根窗格返回 EmptyNodeQueryException
我的一些视图组件(不是全部,大多数都没有附加 fxml 文档)是用这种方法制作的:
https://docs.oracle.com/javafx/2/fxml_get_started/custom_control.htm
虽然我没有在构造函数中使用 fxml 加载器,但我在实例化后从父类调用的“createView()”方法中使用了它
根类看起来像这样
装载机:
Root 的 fxml 文档
失败的测试(对于另一个组件)
RemoveScriptButton 也是类似于 MainPane 的自定义控件
所以我不确定这里发生了什么,我是否应该尝试将根更改为实现 Initializable 的普通控制器类,然后以标准方式加载它,例如
java - Application vs ApplicationTest:不同的事件调度?
目前我正在研究 TextField 和默认/取消按钮的问题。在使用 TestFX 测试假定的修复程序时,我遇到了事件调度 (?) 的差异,这会导致测试失败,而应用程序似乎正在运行。
下面是一个非常简化的版本:
- 只是一个简单的 ui,由一个框内的 textField 组成,用于 Application/Test
- textField 有一个 (key-) 处理程序,当按下a时会触发 actionEvent
- textField 有一个使用 actionEvent 的操作处理程序
- (key-) 处理程序检查操作是否已被使用(这里:简单日志,在实际上下文中,如果操作被使用,则必须使用 (key-) 事件)
修复的关键部分是使用 textField 作为源和目标创建 actionEvent(以防止在调度期间将事件复制到新实例中):
运行应用程序时,这似乎足以使其工作。运行测试时,失败 - 事件被复制到另一个实例,因此被消耗的事件与在调度中传递的事件是不同的实例(只能在调试期间看到)。无法确定发生这种情况的确切地点/原因。
问题是:这种差异是预期的,如果是,为什么/在哪里?或者我做错了什么(远非零概率)?
重现
- 运行应用程序,按 a:注意说明已触发的 actionEvent 已被消耗的日志
- 运行测试,注意日志说明触发的 actionEvent 没有被消耗
编码:
考试:
我的环境是 2018 年 10 月在 win10 上的 fx11 和 TestFX。仅供参考:在 testFX 中打开了一个问题
java - 如何对 JavaFx 属性绑定进行单元测试?
我正在将 OpenJFX 13 与具有DoubleProperty
如下更新的字段的演示模型一起使用:
之所以Platform.runLater
需要,是因为可以从任何线程调用 setter。
如果我现在想测试这是一个简单的单元测试(使用带有 AssertJ 的 JUnit 5),测试会失败,因为 JavaFX 工具包没有初始化。
没问题,我将 TestFX 添加到我的项目中并将测试更新为:
结果:
鉴于更新是在 JavaFx 线程上完成的,这是合乎逻辑的。
那么如何等到 JavaFx 线程更新了属性,以便我可以断言该值?
java - JavaFx MediaPlayer behaves differently in unit test vs application, why?
I want to load meta data from an MP3 file, to be played by a JavaFx MediaPlayer. This works fine in the unit test, but not in the application. In the unit test, 6 items of metaData reported, but zero in the application. The method that "does the work" is the same.
The main class of the application extends Application. The test class extends ApplicationTest from TestFx. Could that affect the behavior?
The application:
The unit test:
Printout from the application:
Printout from the unit test:
What could be the reason? It's a mystery to me. Written with Java 11, JavaFx 11.0.2 and TestFx 4.0.15-alpha.
testing - 如果应用程序抛出异常,如何避免测试执行?
早上好,我是初级测试人员,我必须在 Javafx 中测试一个非常不稳定的应用程序。我正在使用 testfx 框架。
我正在测试一个非常不稳定的应用程序。此应用程序抛出一些异常,它会影响测试的执行。当我要检查跟踪的异常时,测试会在应用程序异常之后显示其异常。它会产生混乱,因为开发人员可以责怪 QA 团队。
如果应用程序抛出异常以避免测试异常,有什么方法可以停止测试执行?
有什么方法可以将测试异常与应用程序异常区分开来?
谢谢提前
我尝试捕获一个测试异常,但如果应用程序完美运行并且测试引发异常,我需要知道它。我需要知道应用程序是否失败。如果应用程序失败,我对应用程序的异常感兴趣。
java - 我可以使用 TestFX 和 JUnit 测试阶段按钮或警报对话框吗?
我正在做一个测试类来验证我的窗口中的一些东西,我想知道我是否可以测试阶段按钮(比如知道窗口是否可调整大小,如果我点击关闭请求会发生什么......)。
我真的迷失了,因为我不知道如何测试它,包括相应的警报,例如当我单击 onCloseRequest 时,会向我显示一个模式警报,询问他是否确定有两个按钮。
这可能吗?我该如何测试它?
谢谢您的帮助。
java - TestFx - 扩展 ApplicationTest 时不调用方法开始
我正在将我的应用程序从 JDK 8 更新到 13 和 Javafx 13。将所有依赖项更新为最新更新的依赖项。但现在我的一项测试返回错误。不是在public void start(Stage stage)
初始化时调用,而是在函数public void tearDown()
调用后,关闭一个空应用程序。
我不明白为什么没有调用 start 。
规格
- 版本:4.0.15-alpha
- 开放JDK 13
- JavaFX 13
- 平台:Ubuntu