#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
.