Как проверить основной метод в приложении JavaFX, когда работает фоновый поток?

1

У меня есть следующее приложение 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();
    }
}

Я уже тестировал другие классы, включая ConsoleController и GUI с TestFX. Для этого конкретного теста я использую JUnit.

Однако ключевая точка здесь заключается в том, что ConsoleController запускает еще один поток, который запускается после GUISimple.main().

Вызов System.exit(0) и Platform.exit() кажется завершающим. Как я могу это сделать?

Теги:
javafx
javafx-8

1 ответ

1

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();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню