Junit4运行mvn test 测试套件升级方案

项目中同时存在Junit4和Junit5,Spring Boot 2.5.4自带maven-surefire-plugin版本导致Junit4测试套件无法执行。解决方案包括全局升级到Junit5或回退maven插件版本。通过`mvn -Dtest=TestSuiteOne test`可指定测试套件执行。

背景:

项目中包含了junit4(独立引入) 和junit5(spring-boot-starter-parent 2.5.4自带版本)
目前我们使用的springboot 3.5.4自带的maven-surefire-plugin 版本为:2.22.2

其加载逻辑如下: 会按照junit5的规则查找测试,但是我们suit套件使用的是junit4版本,导致出现找不到单元测试异常。

if the JUnit 5 Platform Engine is present in the project
    use junit-platform
if the JUnit version in the project >= 4.7 and the <<<parallel>>> configuration parameter has ANY value
    use junit47 provider
if JUnit >= 4.0 is present
    use junit4 provider
else
    use junit3.8.1

       <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven-surefire-plugin.version}</version>
        </plugin>
        
        
JUnit 提供了创建测试套件Test Suite)的功能,以便开发者可以将多个测试类组合在一起运行。这对于需要批量执行多个测试类的场景非常有用,尤其是在持续集成环境中。 ### 创建JUnit测试套件JUnit 4) 在 JUnit 4 中,使用 `@RunWith` 和 `@SuiteClasses` 注解来定义测试套件测试套件本质上是一个空的类,仅用于组合多个测试类。以下是创建测试套件的步骤: 1. **导入必要的包** 需要引入 `org.junit.runner.RunWith` 和 `org.junit.runners.Suite` 包。 2. **定义测试套件类** 创建一个空类,并使用 `@RunWith(Suite.class)` 和 `@SuiteClasses({TestClass1.class, TestClass2.class, ...})` 注解指定需要执行的测试类。 ```java import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({ ArithmeticTest.class, GeometricTest.class, Demo01Test.class, Demo02Test.class }) public class AllTests { // 这个类不需要任何实现代码 } ``` 3. **运行测试套件** 可以通过 IDE(如 Eclipse、IntelliJ IDEA)直接运行该套件类,或者通过 Maven、Gradle 等构建工具执行测试套件。例如,在命令行中使用 Maven 执行测试: ```bash mvn test -Dtest=AllTests ``` ### 创建JUnit测试套件JUnit 5) JUnit 5 的测试套件功能通过 `junit-platform-suite` 模块支持,使用 `@Suite` 注解来定义测试套件。以下是具体步骤: 1. **添加依赖** 确保项目中包含 `junit-platform-suite` 和 `junit-jupiter-engine` 依赖。例如,在 Maven `pom.xml` 中添加: ```xml <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-suite</artifactId> <version>1.9.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.0</version> <scope>test</scope> </dependency> ``` 2. **定义测试套件类** 使用 `@Suite` 注解,并通过 `@SelectClasses` 或 `@SelectPackages` 指定需要执行的测试类或包。 ```java import org.junit.platform.suite.api.Suite; import org.junit.platform.suite.api.SelectClasses; @Suite @SelectClasses({ ArithmeticTest.class, GeometricTest.class, Demo01Test.class }) public class AllTests { // 这个类不需要任何实现代码 } ``` 3. **运行测试套件** 同样可以通过 IDE 或命令行工具(如 Maven 或 Gradle)运行测试套件。例如,在 Maven运行: ```bash mvn test -Dtest=AllTests ``` ### 测试套件的优势 - **批量执行**:可以一次性运行多个测试类,避免手动逐个执行。 - **模块化测试**:可以按模块或功能划分测试套件,提高测试组织的清晰度。 - **集成测试流程**:便于在 CI/CD 管道中集成完整的测试流程,确保每次构建都经过完整的测试验证。 通过上述方法,可以轻松创建并运行 JUnit 测试套件,从而提升测试效率和代码质量。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别说小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值