我有以下JavaFX应用程序,只是想测试主方法没有出错,我该怎么做?我应该这样做吗?
public class GUISimple extends Application {
@Override
public void start(final Stage primaryStage) throws IOException {
primaryStage.setTitle("TCG Console");
Parent root = FXMLLoader.load(ConsoleController.class.getResource("console.fxml"));
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.centerOnScreen();
primaryStage.show();
}
public static void main(String... args) {
launch(args);
}
}
到目前为止我所拥有的:
public class GUISimpleTest {
@Test
public void testMain() {
GUISimple.main();
}
}
我已经使用TestFX测试了其他类,包括ConsoleController
和GUI。对于这个特定的测试我虽然使用JUnit。
这里需要注意的关键点是ConsoleController
启动另一个线程,该线程在调用GUISimple.main()
后运行。
调用System.exit(0)
或Platform.exit()
似乎退出测试。我怎么能这样做?
答案 0 :(得分:2)
launch()阻止了JavaFX的线程。 在单独的线程中启动GUISimple.main(),例如:
@Test
public void testMain() {
new Thread(new Runnable() {
@Override
public void run() {
try {
// Do something
Thread.sleep(3000);
}
catch (InterruptedException e) {
}
System.exit(0);
}
}).start();
GUISimple.main();
}