问题标签 [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 投票
1 回答
463 浏览

java - TestFX 和 Gradle - NoNodeFoundException

testFx 已经在 Eclipse 中运行,并且 GUI 测试运行成功。但它不适用于gradle。它给了我一个按钮上的 NoNodeFoundException 。如果我去掉那行代码,它会向我显示指向 TextField 的下一行的相同异常。

除了开发人员之外,似乎没有人尝试将 testfx 与 gradle 结合使用。

知道如何解决吗?

gradle.build

//隐私保护 mainClassName = "*********.todomanager.model.ReadAndWrite"

不知道这是否有帮助,但这是我的项目结构。 在此处输入图像描述

0 投票
1 回答
824 浏览

javafx - 验证组合框的文本

我正在使用https://github.com/TestFX/TestFX进行 javafx 客户端的 gui 测试。通过 testfx 查询,我得到了组合框,但无法获取其文本进行验证。组合框显示其文本由转换器和给定资源包解析的枚举值。组合框的场景图如下所示:

comboBox.getValue()只给我枚举值而不是文本(我可以验证枚举值,但因为它是一个 gui 测试,所以应该验证显示的文本)。通过尝试,我发现comboBox.getChildrenUnmodifiable().toString()打印

最后的字符串 'StringOfInterest' 正是我需要的,但不清楚它来自哪里。通过查看 javafx 的源代码,似乎正在使用 Node#toString。但是,尚不清楚最后一部分('StringOfInterest')来自何处。我试图获取 ComboBox 的所有子项的文本,但有问题的字符串不是其中的一部分。

如何提取字符串?

0 投票
1 回答
573 浏览

javafx - TestFX 是否仅与 FXML 兼容?

我是 TestFX 的新手。我想知道 TestFX 是否仅与 FXML 兼容?我找不到任何有关如何使用 TestFX 在没有 FXML 的情况下测试 UI 的信息,如果可以在没有 FXML 的情况下进行测试,是否可以分享任何信息或给我一个示例代码让我开始。谢谢!

0 投票
1 回答
185 浏览

java - testfx 没有打印到标准输出

我有一个简单的应用程序,如果用户单击登录按钮,则会将一条消息打印到标准输出。我正在尝试开始使用 testfx,但是当它模拟按钮单击时,不会打印任何消息。这是预期的行为,还是我缺少什么?

DialogioController.java

DialogioTest.java

Dialogio.java

Dialogio.fxml

0 投票
2 回答
2087 浏览

java - TestFX 4 从选择框/菜单中选择一个值

我在这里挠头,试图让我的 TestFX 机器人点击 a Menu,然后点击MenuItem.

上述类都不是派生自,Node所以我不能使用fxRobot.clickOn(Node node).

有没有人知道如何做到这一点?除了简单地使用 TextMatcher,它在整个范围内进行搜索。

带有菜单的 MenuBar 示例:

我将如何实现机器人点击顶部Menu(最好通过菜单的可见文本)和里面的 menuItem(也最好通过视觉文本选择)

选择框示例:

它的项目是从我的控制器动态填充的:

我可以先通过它的fx:id. 但是我将如何选择其中一项?最好从项目可见的文本中。项目文本可能会干扰应用程序内的其他文本。所以我想确保我点击了选择框项目之一,而不是其他一些文本。

问候

0 投票
2 回答
3099 浏览

java - 如何在 Spring Boot 测试中设置“无头”属性?

我正在使用带有 JavaFX 的 Spring Boot 进行测试(基于一些解释这一点的优秀 YouTube 视频)。

为了使它与TestFX一起工作,我需要创建这样的上下文:

我现在想测试这个 JavaFX 应用程序,为此我使用:

这将启动一个 Spring 上下文并按预期用模拟 bean 替换“普通”bean。

但是,我现在得到了一个java.awt.HeadlessException,因为这个“无头”属性没有设置为 false,就像在正常启动期间完成的那样。如何在测试期间设置此属性?

编辑:

仔细看,似乎启动了 2 个上下文,一个是 Spring 测试框架启动的,一个是我在init方法中手动创建的,因此被测应用程序没有使用模拟的 bean。如果有人知道如何在init()方法中获取测试上下文引用,我会很高兴。

0 投票
1 回答
1193 浏览

javafx - JavaFX,Platform.runlater() 有回调吗?

我的应用程序Runnable通过调用方法在 FX 线程上添加了多个,然后,我只想在 FX 平台队列中Platform.runlater没有其他线程时才进行一些计算。Runnable但是我不知道正确的方法,有没有什么事件或回调机制来获取正确的时间?
目前我强制应用程序线程随机休眠 MILLISECONDS。

0 投票
1 回答
162 浏览

java - TestFX 与 Java 7 兼容吗?

运行以下代码段(在 Eclipse 中设置 JDK 7):

导致以下异常:

java.lang.UnsupportedClassVersionError: org/testfx/framework/junit/ApplicationTest : java.lang.ClassLoader.defineClass1(Native Method) at java.security 的 java.lang.ClassLoader.defineClass(Unknown Source) 不支持 major.minor 版本 52.0 .SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net .URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc。 Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang。ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader。 access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader .findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.eclipse.jdt .internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685) 在 org.eclipse.jdt.internal.junit.runner。RemoteTestRunner.loadClasses(RemoteTestRunner.java:421) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:675) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 192)主要(RemoteTestRunner.java:192)主要(RemoteTestRunner.java:192)

注意:我使用的是 testfx-core 和 testfx-junit 4.0.1-alpha。

0 投票
1 回答
5179 浏览

java - 如何安装 TestFX?

我想在 Windows 上的 Eclipse (Neon) 下组合一组 jUnit 测试来自动化 JavaFX GUI 的测试。似乎TestFX是这种事情的蜜蜂膝盖,但是在互联网上看了很多,我仍然不确定如何在不使用Maven或Gradle的情况下安装TestFX。

我不熟悉 Maven 和 Gradle,尝试按照简单的说明通过 Maven 安装 TestFX 是不成功的。这是在 Eclipse Mars 下完成的,之后我的简单 GUI 程序抛出了一个关于无法找到或加载主类的编译错误和一个选择不包含主类型的运行时错误。(简单的 GUI 程序之前运行没有错误。)在此之后,我下载了最新的 Eclipse Neon 并尝试重新启动。

这就是我所做的:

  1. 从eclipse.org下载并安装 Eclipse Neon 。
  2. 创建一个名为 TestProject 的 Java 项目(执行环境 JavaSE-1.8)。
  3. 授予访问权限javafx/**(右键单击项目 -- 属性 -- Java 构建路径 -- 库 -- JRE 系统库 -- 访问规则 -- 添加)。
  4. 用最少的内容创建 MyClass:
  1. 将文件testfx-core-4.0.0-20150226.214553-8.jartestfx 存储库(从如何在项目中使用 TestFX的通过直接下载部分链接)复制到我的 eclipse 项目中,与JRE 系统库位于同一级别;
  2. 将 jar 文件添加到构建路径(右键单击项目 -- 属性 -- Java 构建路径 -- 库 -- 添加 JARS) - 这会自动创建一个名为Referenced Libraries的目录并将 jar 文件复制到其中;和
  3. 创建一个 JUnit 测试(右键单击源文件夹 -- 新建 -- JUnit 测试用例),在测试字段下填写相应的,并为测试用例命名(MyTest)。

然后我尝试扩展 MyTest 类以使用 testfx:

这是第二种情况的代码:

在每种情况下,eclipse 都抱怨超类GuiTest/ApplicationTest无法解析为类型。

我怀疑问题是我没有正确安装testfx。任何人都可以帮忙吗?

0 投票
1 回答
1163 浏览

javafx - 如何在 TestFX 4 中做到这一点?

我有一个关于 testFx 4 的问题。有一个 GUI 对象,我想在其中将文本设置为 TextField(“#searchField”)。

它在 TestFx 3 中的工作方式如下:

所以,它工作正常,一切都很好。

TestFx 4 中 100% 相同的情况:

我总是“FxRobotException:查询“#searchField”没有返回节点。所以他没有“看到”同一个TextField......

我做错了什么?我确定这是我看不到的非常愚蠢的东西......有人可以帮我吗?谢谢!