1

我正在使用使用 JavaFX 8 创建的 GUI 开发简单的 Java 独立应用程序。

我用 TestFX 框架(版本 3.1.0)编写了一些 GUI 测试。在我的本地机器上测试工作正常,但在 Travis CI 环境中失败了。请看一下,一些代码片段:

import static org.assertj.core.api.Assertions.assertThat;
import static org.loadui.testfx.GuiTest.find;

public class JavafxApplicationIT {
    private static GuiTest controller;

    @BeforeClass
    public static void setAfter() throws Exception {
        FXTestUtils.launchApp(JavafxApplication.class);
        Thread.sleep(5000);
        controller = new GuiTest() {
            @Override
            protected Parent getRootNode() {
                return JavafxApplication.getScene().getRoot();
            }
        };
    }

    @AfterClass
    public static void shutdownAll() throws InterruptedException {
        Platform.runLater(() -> JavafxApplication.getStage().close());
    }

    @Test
    public void shouldFillForm_saveLicence_thenOpen_andVerifySignature() throws Throwable {
        controller.click("#newLicenceButton");

        ((TextField) find("#licenceUidField")).setText(licenceUID);
        ((TextField) find("#customerIdField")).setText(customerId);
        ....
        controller.click("#mainActionButton");
        Thread.sleep(3000);
        ((TextField) find("#licFileField")).setText(licenceFile.getPath()); // <--- FAILED

    }
}

我有No nodes matched '#licFileField'错误。我注意到,在每一个失败的情况下,匹配问题总是在应用程序中打开一些新窗口之后出现。

在上述情况下,单击会mainActionButton调用新窗口,并且licFileField是来自新(活动)窗口的元素名称。

也许它与 Travis CI 机器上的 xvfb 配置有关?在.travis.yml我有:

before_install:
  - "export DISPLAY=:99.0"
  - "sh -e /etc/init.d/xvfb start"
  - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16"
4

0 回答 0