Я хочу представить Junit5 Jupiter старому фрагменту теста RCP. Мы создаем наши функции RCP с Maven Tycho.
Начиная с версии 1.2, Tycho должен поддерживать тесты JUnit5.
Все, что я получаю, это (когда я бегу mvn clean install
)
org.apache.maven.surefire.util.SurefireReflectionException: java.util.ServiceConfigurationError: org.junit.platform.engine.TestEngine: Provider org.junit.jupiter.engine.JupiterTestEngine not a subtype
at org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:135)
at org.apache.maven.surefire.booter.SurefireReflector.instantiateProvider(SurefireReflector.java:276)
at org.apache.maven.surefire.booter.ProviderFactory.createProvider(ProviderFactory.java:113)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:81)
at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:107)
at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.runTests(AbstractUITestApplication.java:44)
at org.eclipse.e4.ui.internal.workbench.swt.E4Testable.lambda$0(E4Testable.java:73)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.ServiceConfigurationError: org.junit.platform.engine.TestEngine: Provider org.junit.jupiter.engine.JupiterTestEngine not a subtype
at java.util.ServiceLoader.fail(ServiceLoader.java:239)
at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at org.junit.platform.launcher.core.DefaultLauncher.validateUniqueIds(DefaultLauncher.java:63)
at org.junit.platform.launcher.core.DefaultLauncher.<init>(DefaultLauncher.java:58)
at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:59)
at org.junit.platform.surefire.provider.JUnitPlatformProvider.<init>(JUnitPlatformProvider.java:85)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:131)
... 7 more
Это мои зависимости от Manifest.MF:
org.junit.jupiter.api;bundle-version="5.0.0",
org.junit.jupiter.engine;bundle-version="5.0.0",
org.junit.jupiter.params;bundle-version="5.0.0",
org.junit.jupiter.migrationsupport;bundle-version="5.0.0",
org.junit.vintage.engine;bundle-version="4.12.0",
org.hamcrest.core;bundle-version="1.3.0",
org.junit;bundle-version="4.12.0",
org.opentest4j,
org.junit.platform.commons;bundle-version="1.0.0",
org.junit.platform.engine;bundle-version="1.0.0",
org.junit.platform.launcher;bundle-version="1.0.0",
org.junit.platform.runner;bundle-version="1.0.0",
org.junit.platform.suite.api;bundle-version="1.0.0"
Я добавил эти зависимости в основном методом проб и ошибок. Я знаю, что мне нужны эти комплекты платформ, если я тоже хочу запускать тесты J5 в Eclipse.
В Eclipse и старый, и новый тесты работают нормально.
Существует зависимость junit 4.12, потому что в противном случае все эти старые модульные тесты больше не будут компилироваться.
Есть ли пример того, как запустить тесты Junit5 с использованием Tycho?
Может быть, я прибегаю к помощи не тех вещей;)