【发布时间】:2018-12-07 09:39:35
【问题描述】:
如果使用rerunner-jupiter 扩展名失败,我会尝试重复选定的测试。它在 IntelliJ IDEA 中运行良好,但在 Jenkins 上失败并显示此消息,
org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.support.filter.ClasspathScanningSupport.buildClassFilter(Lorg/junit/platform/engine/EngineDiscoveryRequest;Ljava/util/function/Predicate;)Lorg/junit/platform/commons/util/ClassFilter;
at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:49)
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:61)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:130)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:117)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:82)
at org.junit.platform.surefire.provider.TestPlanScannerFilter.accept(TestPlanScannerFilter.java:50)
at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:98)
at org.junit.platform.surefire.provider.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:121)
at org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:111)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
Jun 28, 2018 3:22:16 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
根本不执行任何测试,整个测试套件一开始就失败了。
【问题讨论】:
-
您的类路径中似乎存在不兼容的
junit-platform-engine和juint-jupiter-engine版本。你如何运行你的测试?马文?如果是这样,您能否发布 POM 的相关部分? -
很好的提示,谢谢。发现我的测试项目中jupiter和platform版本分别是5.1.0和1.1.0,rerunner-jupiter的POM文件中分别是5.0.0和1.0.0
-
那么它现在对你有用吗?
-
我通过将扩展中的源代码直接包含到我的项目中来使其工作。还有一个问题。我已将重复计数设置为 3。我的测试第一次失败,第二次通过,第三次尝试被跳过,完全符合预期。但是 Jenkins 将其视为三个测试,并且由于一次失败,该作业被标记为不稳定。在这种情况下,我希望这项工作能够取得成功。