JUnit5测试套件手动运行正常 但通过Maven Pom执行mvn命令无测试运行
问题解决步骤
1. 修正执行命令
mvn clean命令本身仅负责清理项目的target构建目录,不会触发测试执行逻辑,需要执行完整的测试生命周期命令:
mvn clean test
2. 修正maven-surefire-plugin的包含规则
你提供的完整POM文件中,surefire插件当前配置的包含规则是StanderdPathInstall.java,和你实际的测试套件类名Testsuite不匹配,修改插件配置为:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven.surefire.version}</version> <configuration> <includes> <include>**/Testsuite*.java</include> </includes> <!-- 可选:指定要执行的标签,和你套件的IncludeTags匹配 --> <groups>unitTest</groups> </configuration> </plugin>
3. 移除测试方法的static修饰符
JUnit5原生测试方法不支持static修饰,修改测试类代码:
public class TestA { @Test @Tag("unitTest") void myMethod1() { // 移除static修饰符 System.out.println("Hello World!"); } } public class TestB { @Test @Tag("unitTest") void myMethod2() { // 移除static修饰符 System.out.println("Hello World!"); } }
4. 解决JUnit依赖版本冲突
你的POM中重复引入了两个不同版本的junit-jupiter-engine依赖,删除其中版本为5.8.0-M1的冗余依赖,保留和API版本一致的依赖即可,避免版本不兼容问题。
5. 可选:优化测试套件写法
JUnit5已经提供原生套件支持,不需要依赖JUnit4的@RunWith兼容注解,可以修改测试套件为原生写法(需要额外引入junit-platform-suite-api和junit-platform-suite-engine依赖):
import org.junit.platform.suite.api.SelectClasses; import org.junit.platform.suite.api.Suite; import org.junit.platform.suite.api.IncludeTags; @Suite @SelectClasses( {TestA.class,TestB.class} ) @IncludeTags("unitTest") public class Testsuite { }
内容的提问来源于stack exchange,提问作者anandyita sinha
相关产品推荐
相关产品推荐

