1

一直在使用 TestFx 框架来测试我的 JavaFx 应用程序。它在测试方法的基础上运行良好。但是,一旦我尝试一次运行多个测试方法或测试类,就会收到此错误:

Caused by: java.lang.IllegalStateException: Cannot set style once stage has been set visible

我的测试类如下所示:

public class TestExample extends ApplicationTest {

    @Override
    public void init() throws TimeoutException {
        System.setProperty("workingDir", "src/test/resources/test1");
    }

    @Override
    public void start(Stage stage) {
        final Main main = new Main();
        main.start(stage);
    }

    @Test
    public void testHungProcess_clientForciblyStopsProcess(){
        //....do some testing
    }
}

而我的主班,确实在舞台上设置了一些风格。IE:

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        //....other things
        primaryStage.initStyle(StageStyle.UNDECORATED);
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        //....other things
    }
}

我正在使用 TestFx v4.0.8-alpha 和 Java 8 附带的 JavaFx。

有谁知道运行多个连续测试而不会出现此错误的方法?

任何帮助,将不胜感激。

4

1 回答 1

0

事实上,所有测试都TestFx使用一个实例Stage

可能的解决方案是检查样式并仅在需要时对其进行初始化:

    if (stage.getStyle() != StageStyle.UNDECORATED) {
        stage.initStyle(StageStyle.UNDECORATED);
    }

相关的其他问题

于 2017-12-10T06:37:15.880 回答