Поддельный запуск платформы JavaFX

В моем проекте у меня есть своеобразная установка для тестирования компонентов JavaFX: во-первых, есть приложение, которое обычно запускает компонент через основной метод для визуальной проверки. Но тогда есть подклассы этих основных классов, которые являются фактическими тестами JUnit.

В тестах я не хочу запускать приложение с отображаемым пользовательским интерфейсом (тесты также должны запускаться в системе, в которой нет оконного менеджера, например, непрерывной интеграции). Обычно это выдает ошибку, так как платформа не запущена. Чтобы предотвратить это, я вызываю:

final Runnable dummyRunnable = new Runnable() {
    @Override
    public void run() {
    System.out.println("Startup platform");
    }
};
PlatformImpl.startup(dummyRunnable);

Однако PlatformImpl является внутренним API (com.sun.javafx.application.PlatformImpl). Что в основном связывает тест с конкретной маркой JDK. Чтобы выяснить, происходит ли это, я на самом деле вызываю метод через отражение, поэтому я могу регистрировать конкретные случаи ошибок.

Есть ли способ достичь того же (запуск тестов, которые являются подклассом приложения, но не вызывают метод запуска для запуска в автономном режиме)?


person hotzst    schedule 27.09.2015    source источник