spring boot项目 mvn test 和 mvn clean install 和 mvn test-compile 识别不到测试类无法运行单元测试

博客指出测试类使用junit4,而spring boot版本的test框架自带junit5,二者不兼容。可按spring boot对应版本的junit框架修改测试类,如修改为junit5,也可按指定文档强制使用junit4。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试类使用了junit4, spring boot 版本的test 框架自带的是junit5,不兼容。

  1. 按照spring boot 对应的版本的junit框架,修改测试类,比如我就修改了junit5。
  2. 按照: https://docs.spring.io/spring-boot/docs/2.6.3/reference/html/features.html#features.testing,强制使用junit4
### Maven 命令 `mvn verify` `mvn test` 的区别及使用场景 #### 1. **`mvn test` 的功能** `mvn test` 主要负责运行项目单元测试。它是 Maven 构建生命周期的一部分,在此阶段,Maven 使用 Surefire 插件来执行所有的测试类[^5]。这些测试通常由开发者编写,目的是验证代码的功能是否正常工作。 - 测试的结果会被记录下来,并生成一份详细的测试报告。 - 如果任何一个测试失败,则整个构建过程会停止并返回错误状态。 #### 2. **`mvn verify` 的功能** `mvn verify` 是更高级别的构建阶段之一,它不仅包含 `test` 阶段的操作,还增加了额外的验证步骤。例如: - 执行集成测试(Integration Tests),这通常涉及模拟真实环境下的交互。 - 检查静态代码质量指标,比如通过 Checkstyle、PMD 或 FindBugs 工具进行分析。 - 确保所有必要的构件已经准备好并且满足预期的质量标准。 因此,当执行 `mvn verify` 时,实际上也会触发前面的所有阶段,包括但不限于 compiletest 等,直到达到 verify 阶段为止[^5]。 #### 3. **两者的主要差异** | 特性 | mvn test | mvn verify | |---------------------|-----------------------------------------|-----------------------------------------| | **覆盖范围** | 只专注于运行单元测试 | 包含单元测试以及其他类型的验证 | | **依赖关系** | 不依赖后续阶段 | 依赖于前序阶段的成功完成 | | **适用场合** | 开发期间快速确认单个模块或组件的行为 | 准备发布前进行全面的质量保障 | #### 4. **实际应用场景举例** 对于开发人员来说,在日常编码过程中频繁使用的可能是 `mvn test` ,因为它能迅速反馈当前改动对已有逻辑的影响;而到了准备提交或者正式上线前夕,则更适合采用 `mvn verify` 来做最后一次全面核查,确保没有任何潜在风险遗漏出去[^3]。 另外值得注意的是,在持续集成环境中配置 Jenkins job 时,可以根据不同分支设定相应的策略——如针对 feature branches 设置仅跑 `mvn test` 加速反馈循环时间;而对于 master/main branch 则强制走完整流程即 `mvn verify` 提升整体软件品质水平[^3]。 --- ### 示例代码 下面给出一段简单的 POM 配置示例,展示了如何自定义这两个阶段的行为: ```xml <build> <plugins> <!-- 单元测试插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <includes> <include>**/*UnitTest.java</include> </includes> </configuration> </plugin> <!-- 集成测试插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>3.0.0-M5</version> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> <configuration> <includes> <include>**/*ITest.java</include> </includes> </configuration> </plugin> </plugins> </build> ``` 在此例子中,我们区分了两类测试:一类是以 *UnitTest 结尾的标准单元测试,另一类则是命名为 *ITest 的集成测试。这样做的好处是可以更加精细地控制哪些测试应该被执行以及何时执行。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值