运行多个JavaFx TestFx测试时出错:由以下原因引起:java.lang.IllegalStateException:一旦将stage设置为visible

时间:2017-11-29 07:06:21

标签: javafx testfx

一直使用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
    }
}

我的主课, 在舞台上设置了一些风格。即:

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。

有没有人知道如何在不引发此错误的情况下运行多个连续测试?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

TestFx使用Stage的一个实例进行所有测试。

可能的解决方案是检查样式并仅在需要时启动它:

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

相关other question