有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在每次测试后启动应用程序Junit5 TestFX

我正在用Junit5和TestFX编写一个应用程序测试。 我的意图是主测试类在每次测试之后重新启动应用程序。据我所知,我将使用@beforeach注释,但它对我不起作用

这是我的测试课:

@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!");
    }

}

问题是:如何在每次测试后重新启动应用程序


共 (1) 个答案

  1. # 1 楼答案

    在课堂上,如果不看一下StartMain,很难回答这个问题。看起来你正在使用一个单例模式。如果是这种情况,我会在StartMain中创建一个新方法,将singleton实例设置为null,因此当再次调用getInstance时,必须重新创建它:

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