java.lang.NoClassDefFoundError:运行 Junit5 时出现 org/apache/maven/surefire/api/testset/TestSetFailedException

问题描述 投票:0回答:1

运行 Junit 5 测试用例时面临以下问题。

CMD:

$ mvn test -Dtest=com.app.AppTest -DskipTests=false
(根据需要仅运行特定的测试文件以及Jdk 1.8.0_232apache-maven-3.8.6

错误:

[INFO] --- maven-surefire-plugin:3.0.0-M7:test (default-test) @ projects-test ---
[WARNING] Error injecting: org.apache.maven.plugin.surefire.SurefirePlugin
java.lang.NoClassDefFoundError: org/apache/maven/surefire/api/testset/TestSetFailedException
    at java.lang.Class.getDeclaredConstructors0 (Native Method)
    at java.lang.Class.privateGetDeclaredConstructors (Class.java:2671)
    at java.lang.Class.getDeclaredConstructors (Class.java:2020)
    at com.google.inject.spi.InjectionPoint.forConstructorOf (InjectionPoint.java:245)
    at com.google.inject.internal.ConstructorBindingImpl.create (ConstructorBindingImpl.java:115)
    at com.google.inject.internal.InjectorImpl.createUninitializedBinding (InjectorImpl.java:706)
....
....
....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:03 min
[INFO] Finished at: 2023-04-06T10:58:20+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7:test (default-test) on project projects-test: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7:test failed: A required class was missing while executing org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7:test: org/apache/maven/surefire/api/testset/TestSetFailedException
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/Users/macusr/.m2/repo/org/apache/maven/plugins/maven-surefire-plugin/3.0.0-M7/maven-surefire-plugin-3.0.0-M7.jar
[ERROR] urls[1] = file:/Users/macusr/.m2/repo/org/apache/maven/surefire/surefire-junit47/2.19.1/surefire-junit47-2.19.1.jar
....
....
....
[ERROR] urls[16] = file:/Users/macusr/.m2/repo/org/ow2/asm/asm/9.2/asm-9.2.jar
[ERROR] urls[17] = file:/Users/macusr/.m2/repo/com/thoughtworks/qdox/qdox/2.0.1/qdox-2.0.1.jar
[ERROR] urls[18] = file:/Users/macusr/.m2/repo/org/apache/maven/surefire/surefire-shared-utils/3.0.0-M7/surefire-shared-utils-3.0.0-M7.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR] 
[ERROR] -----------------------------------------------------
[ERROR] : org.apache.maven.surefire.api.testset.TestSetFailedException
[ERROR] -> [Help 1]
[ERROR] 

Pom.xml

... <!-- Other dependencies -->
...
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <scope>test</scope>
</dependency>
<!-- TestNG dependency used for separate use-case -->
<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-junit5</artifactId>
    <version>1.3.1</version>
    <scope>test</scope>
</dependency>
<!-- karate-junit5 which has junit-jupiter-api:5.7.2 & junit-jupiter-engine:5.7.2--> 
...
...
<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>3.0.0-M7</version>
    </plugin>
...
...

之前我们有

maven-surefire-plugin:2.22.2
插件和
karate-junit5:1.3.1
,导致没有测试发现问题

[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ fi-functonal-test ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:02 min
[INFO] Finished at: 2023-04-06T11:19:32+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project projects-test: No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]
[ERROR] 

所以,我们已经转向最新版本的

maven-surefire-plugin:3.0.0-M7

karate maven-plugin junit5 maven-surefire-plugin junit-jupiter
1个回答
0
投票

我认为这可能与surefire中的这个问题(当前开放)有关 - https://issues.apache.org/jira/browse/SUREFIRE-1951

© www.soinside.com 2019 - 2024. All rights reserved.