问题标签 [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 - 如何测试 JavaFX (MVC) 控制器逻辑?
我们如何正确地为 JavaFX 控制器逻辑编写单元/集成测试?假设我正在测试的 Controller 类名为LoadController
,它的单元测试类是LoadControllerTest
,我的困惑源于:
如果
LoadControllerTest
该类LoadController
通过 I 实例化一个新对象,LoadController loadController = new LoadController();
则可以通过(许多)setter 将值注入控制器。这似乎是使用反射(遗留代码)的唯一方法。如果我不将值注入 FXML 控件,那么这些控件显然还没有初始化,返回 null。如果我改为使用
FXMLLoader
'loader.getController()
方法来检索loadController
它,它将正确初始化 FXML 控件,但控制器initialize()
会因此被调用,这会导致运行速度非常慢,并且由于无法注入模拟的依赖项,因此它更像是一个编写不佳的集成测试.
我现在正在使用前一种方法,但是有更好的方法吗?
测试外汇
这里的答案涉及@Tests
基于主应用程序start
方法而不是Controller 类的 TestFX。它显示了一种测试控制器的方法
但这个答案涉及DataFX - 而我只是询问 JavaFX 的 MVC 模式。大多数 TestFX 讨论都集中在它的 GUI 功能上,所以我很好奇它是否也适合控制器。
下面的示例显示了我如何向控制器注入 aVBox
以使其在测试期间不为空。有没有更好的办法?请具体
更新
这是一个基于 hotzst 建议的完整演示,但它返回此错误:
org.mockito.exceptions.base.MockitoException:无法实例化名为 'loadController' 类型的 'class com.mypackage.LoadController' 的 @InjectMocks 字段。您没有在字段声明时提供实例,所以我尝试构建实例。但是构造函数或初始化块抛出异常:null
javafx - 带有 TestFX 的 TornadoFX 在每个 TestCase 之后关闭视图
我正在尝试使用 testfx 框架测试一个基本的登录屏幕(使用 tornadofx 创建)。
我添加了 3 个运行良好的测试用例,但问题是它们使用前一个阶段而不是创建一个新的阶段。我希望测试用例独立运行。
我正在测试 View() 而不是 App()。如果我使用 MyMainApp().start(stage) 然后 MyMainApp().stop(),我会得到所需的行为。
但是如何为视图和片段执行此操作。
下面是代码:
java - 运行 gradle 测试时出现 NoClassDefFoundError、FxRobotException、FatalBeanException 和 ExecutionException
我正在尝试在离线机器上使用 gradle 运行 TestFX 测试。
使用类似的命令
在一台机器上它运行良好,但在另一台机器上它失败了
这可能意味着这里的双重错误。运行测试时会发生一个(未知)错误,而在TestFX
尝试生成有关它的异常时会发生另一个错误。
我对后一个感兴趣:为什么 Gradle 看不到这个类?
同时,我编写了测试以检查课程是否可用
它通过了,意味着课程FxRobotException
可用。
确认,以下依赖项在build.gradle
怎么可能?
更新
如果我跑
(更多信息)
发生以下异常:
奇怪的是,现在我们确实看到了来自的实际消息,FxRobotException
并且 class-def 错误现在与不同的FatalBeanException
. 同时,根本原因似乎是某处的执行异常。
更新 2
build.gradle
如下(注意,它是“本地的”):
并且错误跟踪如下:
更新 3
依赖检查结果
java - 如何使用 TestFX 等到元素可见?
我正在尝试使用 TestFX 中的 waitUntil() 方法等到屏幕上出现对话框。我找到了Wiki提供的示例,但它似乎不适用于我。谁能帮我解决这个问题?
java - TestFX 点击菜单项
我正在编写一个带有菜单栏的 JavaFX 应用程序。我已经给出了菜单项 CSS id,我想使用 TestFX 来点击它们。这是代码:
当我运行它时,我可以看到我的鼠标移动到屏幕上完全错误的位置,然后测试失败,说它找不到任何匹配的元素#menu-file-new-project
。我假设它找不到它们,因为它永远不会打开“文件”菜单,因为它点击了错误的位置。
我该怎么办?Windows 10、Java 8u120、TestFX 4.0.6。对于记录,它在单片无头模式下以相同的方式失败
java - 在 JavaFX 中使用 Jubula jar
我必须开发一个程序(如 squish / jubula / zaptest )测试使用 JavaFX 编程的应用程序。所以我的问题是:
1) 可以将 jubula jar 作为测试框架库(如 TestFX)添加到应用程序中吗?如果是这样,是否有这方面的文档或教程?我尝试使用 TestFX,但在挂钩和 AUT 方面遇到了巨大的问题。
2) Jubula 可以修改为不同的 Eclipse 工具吗?如何?
每一条评论都将不胜感激。
javafx - TestFX 如何理解一个项目的颜色?
我正在尝试获取矩形的背景颜色。我试图找到一种方法,但我不能。难道没有一种方法可以让这一切变得简单吗?任何帮助都会得到帮助
unit-testing - 无法在无头环境中运行 JavaFX
在我的测试包中,我有常规的单元测试和 testfx 测试。当我尝试运行整个测试包时,那些 testfx 测试全部失败并给出以下异常:
org.junit.AssumptionViolatedException:无法在无头环境中运行 JavaFX
有谁知道如何单独运行 testfx 测试和其他单元测试?
java - 在无头模式下执行的第一个 TestFX 测试失败,相同的第二个测试通过
我在使用 TestFX 时遇到问题,并且在我的台式电脑上使用 openjfx-monocle 以无头模式运行。
在我的第一个“爱好项目”中一切正常,但现在在工作中这样做时,我遇到了我们拥有的主菜单的一些问题。
所以主菜单是由一个MenuBar 组成的,其中包含Menus,而那些包含menuItems。链接到下面的图片。
我遇到的问题是当我想从主窗口打开一个关于对话框时。这是通过单击菜单上的“帮助”菜单栏来完成的,该菜单显示菜单项的下拉列表,对于帮助菜单,我们现在只有“关于”选项。
所以对于实际问题。尝试单击“关于”菜单项时出现错误...因此“帮助”菜单是可单击的。
我得到的错误是:
现在让我感到奇怪的是,它对于执行的下一个测试非常有用。因此,如果我要创建一个空测试,或者一个仅对 1+1 = 2 进行断言并将其设置为首先运行的测试,那么所有测试都会通过。- 但我不想那样做,有些东西闻起来很有趣,我想知道我做错了什么。
现在有没有人以前遇到过这个/类似的问题?或任何可以帮助我的人,希望能指出我犯过的一些愚蠢的新手错误并送我上路:)
您可能需要的其他信息: 操作系统:Windows 7。编辑器:Eclipse。摇篮版本:3.3。JDK:8u121。
build.gradle 文件中的 TestFX 和 Monocle 依赖项是:
我很确定是否还需要其他任何东西,但我会试一试并发布这个。如果我遗漏了什么,或者我有任何不清楚的地方,请事先道歉。
我正在运行的代码如下所示。
这是我的简单 TestFXBase 类:
这是 AboutPage 类: