Запуск тестов JUnit на eclipse-test-plugins из maven

#java #eclipse #maven #junit #rcp

#java #eclipse #maven #junit #rcp

Вопрос:

У меня есть многомодульный проект eclipse на RCP maven3. Я хочу запустить тесты JUnit из maven. Модули, в которых есть тесты JUnit, являются плагинами eclipse. Я попытался запустить их с помощью Tycho Surefire Plugin , добавив это в pom-файл:

     <packaging>eclipse-test-plugin</packaging>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
  <build>
    <sourceDirectory>src/test</sourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>tycho-surefire-plugin</artifactId>
        <version>0.24.0</version>
        <configuration>
          <includes>
              <include>**/*Test.java</include>
          </includes>
          <useUIHarness>false</useUIHarness>
          <providerHint>junit4</providerHint>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
  

С mvn test тесты не запускаются. Компилируются только классы.
С mvn verify я получаю следующую ошибку:

——————————————————- Т Е С Т С ——————————————————- Произошла ошибка. Смотрите файл журнала E:GitEF8_Toolcenter_repository_customde.audi.eftc.platform.contacttargetworkdata.metadata.log .

[ОШИБКА] Не удалось выполнить цель org.eclipse.tycho:tycho-surefire-plugin: 0.24.0: тест (по умолчанию-test) в проекте xxxx.contact: При запуске тестовой среды выполнения произошла непредвиденная ошибка (код возврата 13). Подробности смотрите в журнале регистрации. -> [Справка 1]

Журнал содержит:

!СЕССИЯ 2019-03-05 11:31:23.457 ———————————————— eclipse.buildId=неизвестно java.версия=1.8.0_191 java.поставщик = корпорация Oracle Константы загрузчика: OS=win32, ARCH=x86_64, WS=win32, NL=en_US Аргументы фреймворка: -application org.eclipse.tycho.surefire.osgibooter.headlesstest -testproperties xxxxtargetsurefire.properties Аргументы командной строки: -data xxxxtargetworkdata -application org.eclipse.tycho.surefire.osgibooter. headlesstest -тестовые свойства xxxxtargetsurefire.properties

!ЗАПИСЬ org.eclipse.tycho.surefire.junit4 2 0 2019-03-05 11:31:24.892 !СООБЩЕНИЕ Не удалось разрешить модуль: org.eclipse.tycho.surefire.junit4 [134] Нерешенное требование: Импорт-пакет: junit.framework; версия= «3.0.0» Нерешенное требование: Импорт-пакет: junit.framework; версия =»3.0.0″

!ЗАПИСЬ org.eclipse.osgi 4 0 2019-03-05 11:31:24.893 !СООБЩЕНИЕ Ошибка приложения!СТЕК 1 org.apache.maven.surefire.util.Исключение SurefireReflectionException: java.lang.ClassNotFoundException: org.apache.maven.surefire.junit4.JUnit4Provider в org.apache.maven.surefire.util.ReflectionUtils.loadClass(ReflectionUtils.java:251) в org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:128) в org.apache.maven.surefire.booter.Подтверждающий индикатор.instantiateProvider(подтверждающий индикатор.java:235) в org.apache.maven.подтверждающий.booter.ProviderFactory.createProvider(ProviderFactory.java:113) в org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:78) в org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:91) в org.eclipse.tycho.surefire.osgibooter.HeadlessTestApplication.run(HeadlessTestApplication.java:21) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) на java.lang.reflect.Метод.invoke(Method.java:498) в org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587 ) в org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198) в org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) в org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) в org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388) в org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) в java.lang.reflect.Method.invoke (Метод.java:498) в org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:656) в org.eclipse.equinox.launcher.Main.basicRun(Main.java:592) в org.eclipse.equinox.launcher.Main.run(Main.java:1498) в org.eclipse.equinox.launcher.Main.main(Main.java:1471), вызванный: java.lang.Исключение ClassNotFoundException: org.apache.maven.surefire.junit4.JUnit4Provider в org.eclipse.tycho.surefire.osgibooter.CombinedClassLoader.FindClass(CombinedClassLoader.java:37) на java.lang.ClassLoader.loadClass(ClassLoader.java:424) на java.lang.Загрузчик классов.loadClass(ClassLoader.java:357) в org.apache.maven.surefire.util.ReflectionUtils.loadClass(ReflectionUtils.java:243) … еще 24

Что я делаю не так? Заранее благодарю вас!

Комментарии:

1. Смотрите это руководство по Eclipse Tycho с примером проекта .

Ответ №1:

Я выяснил, в чем была проблема. Мне пришлось использовать зависимости в MANIFEST.MF также org.junit .