Ошибка при запуске нескольких тестов JavaFx TestFx: вызвано: java.lang.IllegalStateException: невозможно установить стиль после того, как этап был установлен видимым

Использовали платформу 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
    }
}

А мой класс Main устанавливает некоторые стили на сцене. то есть:

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 с JavaFx, который поставляется с Java 8.

Кто-нибудь знает способ запустить несколько последовательных тестов без возникновения этой ошибки?

Любая помощь будет оценена по достоинству.


person Ben    schedule 29.11.2017    source источник


Ответы (1)


Тот факт, что TestFx использует один экземпляр Stage для всех тестов.

Возможное решение - проверить стиль и инициировать его только при необходимости:

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

Связанный другой вопрос.

person Dmytro Maslenko    schedule 10.12.2017