Monocle Headless Platform была скомпилирована более поздней версией Java Runtime (версия файла класса 53.0) - PullRequest
0 голосов
/ 26 сентября 2019

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

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

public class MainTest extends ApplicationTest implements FxRobotInterface {

      Logger loggerGuiTesting = LoggerManager.getInstance().getLogger(LoggerType.GUI_TESTING);

      public static final boolean HEADLESS = true;

      private Stage primaryStage = AppMainClass.getStage();

      @BeforeAll
      public static void setupSpec() throws Exception {
        if (HEADLESS) {
            System.setProperty("testfx.robot", "glass");
            System.setProperty("testfx.headless", "true");
            System.setProperty("prism.order", "sw");
            System.setProperty("prism.text", "t2k");
            System.setProperty("java.awt.headless", "true");
        }
          FxToolkit.registerPrimaryStage();
    }

    @BeforeEach
    public void setUp() throws Exception {      
      FxToolkit.setupApplication(AppMainClass.class);
    }

    private Scene scene;

    @Override
    public void start(final Stage stage) {

        this.primaryStage = stage;

        this.primaryStage.show();

        this.scene = this.primaryStage.getScene();

        this.loggerGuiTesting.log(Level.INFO, "App 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!");
    }

}

Я запускаю тест, и появляется код ошибкис этим сообщением:

java.lang.RuntimeException: java.lang.UnsupportedClassVersionError: com / sun / glass / ui / monocle / HeadlessPlatform была скомпилирована более поздней версией среды выполнения Java (классверсия файла 53.0), эта версия Java Runtime распознает только версии файла класса до 52.0

java.lang.UnsupportedClassVersionError: com / sun / glass / ui / monocle / HeadlessPlatform была скомпилирована более поздней версиейсреды выполнения Java (версия файла класса 53.0), эта версия среды выполнения Java распознает только версии файла класса до 52.0

java.lang.IllegalStateException: инструментарий не инициализирован

Mybuild.gradle выглядит примерно так:

зависимости {
проект реализации (': A')
impпроект lementation (': B')
проект внедрения (': C')
проект внедрения (': D')
проект внедрения (': E')
проект внедрения (': F') реализация fileTree (dir:' lib ', включает в себя:' .jar ')
реализация fileTree (dir:' ../A/lib ', включает в себя:'
.jar ')
реализация fileTree (dir: '../A/lib/gson', включая: ' .jar')
реализация fileTree (dir: 'lib /', include: '
.jar')
реализация fileTree (dir: 'lib /', включает в себя: ' .jar')
реализация fileTree (dir: '../C/C1/framework/libraries', включает в себя: '
.jar ')
реализация fileTree (dir:' ../C/C1/framework ', включает:' *. jar ') api' org.apache.commons: commons-math3: 3.6.1 junit 'api': junit: 4.12 'api' junit: junit: 4.13-beta-3 '

 if(JavaVersion.current() >= JavaVersion.VERSION_11){      

реализация ("org.openjfx: javafx-base: 11.0. +: win",
"org.openjfx: javafx-graphics: 11.0. +: win ",
" org.openjfx: javafx-controls: 11.0. +: win ",
" org.openjfx: javafx-media: 11.0. +: win ""org.openjfx: javafx-fxml: 11.0. +: Победа "," org.openjfx: javafx-swing: 11.0. +: Победа ",
" org.openjfx: javafx-web: 11.0. +: Победа ")}

// Use JUnit test framework    
// This dependency provides the public API for writing tests and extensions       
      testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter', version: >'5.4.2'     

testImplementation group: 'org.junit.jupiter', имя: 'junit-jupiter-api', версия: '5.4.2'
testImplementation group: 'org.junit.jupiter', имя: 'junit-jupiter-params ', версия:' 5.4.2 '
testImplementation group:' org.junit.jupiter ', имя:' junit-jupiter -igrationsupport ', версия:>' 5.4.2 'testRuntimeOnly group:' org.junit.jupiter ', имя:' junit-jupiter-engine ', версия:' 5.4.2 '
testRuntimeOnly группа:' org.junit.vintage ', имя:' junit-vintage-engine ', версия:' 5.4.2 'testImplementation group:' org.junit.platform ', имя:' junit-platform-engine ', версия:' 1.5.1 '
testImplementation group:' org.junit.platform ', имя:' junit-platform-launcher ', версия:' 1.5.1 '

testCompileOnly group: 'junit', name: 'junit', version: '4.13-beta-3'

testCompileOnly group: 'junit', name: 'junit', version: '4.12'

testImplementation group: 'org.testifyproject.junit4', name: 'junit4-core', version: '1.0.6'

//This dependency provides TestFX
testImplementation group: 'org.testfx', name: 'testfx-junit5', version: '4.0.16-alpha'
testImplementation group: "org.testfx", name: "testfx-core", version: "4.0.16-alpha"
testImplementation group: "org.testfx", name: "testfx-junit", version: "4.0.16-alpha"

testImplementation group: 'org.testfx', name: 'testfx-legacy', version: '4.0.8-alpha'

// This dependency runs tests in JUnit 5, 4, 3 
testRuntimeOnly(
      'org.junit.jupiter:junit-jupiter-engine:5.4.2',
        'org.junit.vintage:junit-vintage-engine:5.4.2',
         'org.testfx:openjfx-monocle:jdk-9+181.1'

)
                                            }

test {useJUnitPlatform ()

useJUnit()
  jvmArgs "-Dheadless=${project.hasProperty('headless') ? project.headless : false}"

testLogging {         
   events "passed", "skipped", "failed"   
}       }

В настоящее время я использую jdk1.8.0_201.Мне не разрешено обновлять Java-версию.

...