Как запускать приложение после каждого теста Junit5 TestFX

Я пишу тест приложения с Junit5 и TestFX. Мое намерение состоит в том, чтобы основной тестовый класс перезапускал приложение после каждого теста. Насколько я знаю, я буду использовать аннотацию @BeforeEach, и она у меня не сработала.

Вот мой тестовый класс:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MainTest extends ApplicationTest implements FxRobotInterface {
Logger loggerGuiTesting = LoggerManager.getInstance().getLogger(LoggerType.GUI_TESTING);

@BeforeEach
@Override
public void start(final Stage stage) {
    StartMain.getInstance();
    this.loggerGuiTesting.log(Level.INFO, "Application starts!");
}

@AfterAll
public void endApplication() {
    new ExitGuiTest().run(); // That's my internal test framework
}

@Test
public void atestIfOpeningScreenIsThere() {
    verifyThat("#imageViewSplashScreenLogo", NodeMatchers.isNotNull());
    verifyThat("#progressBarSplashScreen", NodeMatchers.isNotNull());
    verifyThat("#labelSplashScreenVersion", NodeMatchers.isNotNull());
    verifyThat("#labelSplashScreenDate", NodeMatchers.isNotNull());
    this.loggerGuiTesting.log(Level.INFO, "testIfOpeningScreenIsThere, succeeded!");
}

@Test
public void btestIfRadioButtonOneExist() {
    assertThat("#sourcesOneRadioButton", is("#sourcesOneRadioButton"));
this.loggerGuiTesting.log(Level.INFO, "testIfRadioButtonOneExist, succeeded!");
    }

@Test
    public cnextTest() {
        new StartAnotherGuiTest().run();
        this.loggerGuiTesting.log(Level.INFO, "anotherTest, succeeded!");
    }

}

Вопрос: как перезапустить приложение после каждого теста?


person Luky    schedule 02.04.2019    source источник


Ответы (1)


Трудно ответить, не взглянув на класс StartMain. Похоже, вы используете шаблон singleton. Если это так, я бы создал новый метод в StartMain, который устанавливает для экземпляра singleton значение null, поэтому при повторном вызове getInstance его необходимо создать заново:

@After //This should be executed after each test
public void destroyApp()
{
    StartMain.getInstance().destroy();
}
person pglez82    schedule 12.11.2019