我正在尝试为我的大学项目编写 GUI 测试。我正在尝试使用 TestFX 4.0.4 来执行此操作,但我遇到了问题。对于该项目,我们还必须使用与 Travis 的持续集成。这意味着我必须使 GUI 测试无头。但是,当我尝试无头运行我的测试时,它们会失败,而当它们有头时它们会通过。
这是我用来无头运行测试的代码:
@BeforeClass
public static void setupHeadlessMode() {
System.setProperty("testfx.robot", "glass");
System.setProperty("testfx.headless", "true");
System.setProperty("prism.order", "sw");
System.setProperty("prism.text", "t2k");
System.setProperty("java.awt.headless", "true");
}
我运行的测试单击选项按钮,它将场景切换到选项菜单,然后必须单击音乐按钮来切换是否正在播放音乐。在这种情况下,场景切换可能会导致失败,但我不知道如何避免这种情况。这是测试代码:
@Test
public void testMusicPlaying() {
clickOn("#optionsButton");
assertThat((boolean) ConfigLoader.get("musicPlaying")).isTrue();
clickOn("#musicButton");
assertThat((boolean) ConfigLoader.get("musicPlaying")).isFalse();
clickOn("#musicButton");
assertThat((boolean) ConfigLoader.get("musicPlaying")).isTrue();
}