【问题标题】:'junit-jupiter' failed to discover tests when using rerunner-jupiter extension in Jenkins在 Jenkins 中使用 rerunner-jupiter 扩展时,“junit-jupiter”未能发现测试
【发布时间】: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-enginejuint-jupiter-engine 版本。你如何运行你的测试?马文?如果是这样,您能否发布 POM 的相关部分?
  • 很好的提示,谢谢。发现我的测试项目中jupiter和platform版本分别是5.1.0和1.1.0,rerunner-jupiter的POM文件中分别是5.0.0和1.0.0
  • 那么它现在对你有用吗?
  • 我通过将扩展中的源代码直接包含到我的项目中来使其工作。还有一个问题。我已将重复计数设置为 3。我的测试第一次失败,第二次通过,第三次尝试被跳过,完全符合预期。但是 Jenkins 将其视为三个测试,并且由于一次失败,该作业被标记为不稳定。在这种情况下,我希望这项工作能够取得成功。

标签: jenkins junit5


【解决方案1】:

如果您正在运行名为 java9 模块的代码并且您错过了在 module-info.java 中需要一些依赖项,您可能会收到消息“ID 为 'junit-jupiter' 的 TestEngine 无法发现测试”。看到这个答案:https://stackoverflow.com/a/65801052/1874113

【讨论】:

    猜你喜欢
    • 2019-06-08
    • 2022-01-23
    • 1970-01-01
    • 2021-05-19
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    相关资源
    最近更新 更多