SpringBoot项目如何创建空测试类使mvn test返回测试运行数为0
解决方案
方案一:调整Maven Surefire插件配置(优先推荐)
你当前使用的2.4.2版本surefire插件版本过旧,无测试用例时只会输出No tests to run提示,不会生成标准测试统计行。升级插件版本并添加对应配置即可直接满足需求,无需额外编写空测试类:
在项目pom.xml中添加如下插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <!-- 建议使用2.22.0以上稳定版本 --> <version>3.2.2</version> <configuration> <!-- 关闭无测试用例时的报错,同时输出0运行的统计结果 --> <failIfNoTests>false</failIfNoTests> </configuration> </plugin> </plugins> </build>
配置完成后,即使项目没有任何测试类,执行mvn test也会直接输出Tests run: 0, Failures: 0, Errors: 0, Skipped: 0的标准统计结果,完全匹配Jenkins流水线的校验规则。
方案二:修改现有测试类实现0统计
如果你必须保留测试类文件,只需要删除测试方法上的@Test注解即可:
package com.WebDemo.Controller; import org.junit.runner.RunWith; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import com.webDemo.WebApplication; import org.springframework.boot.test.SpringApplicationConfiguration; @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = WebApplication.class) @WebAppConfiguration public class BanksMvcControllerTest { // 移除@Test注解,不会被识别为测试用例 public void contextLoads() { } }
Surefire插件扫描时只会识别带@Test注解的方法为测试用例,移除后运行测试就会得到0运行的统计结果。
注意事项
- 不要给测试方法加
@Ignore注解,该注解会让用例被统计为Skipped: 1,不符合需求 - 方案一适配性更强,无需为每个无测试项目单独维护空测试类,统一配置插件即可覆盖所有项目
- 2.22.0以下版本的surefire插件不支持无测试用例时输出0统计的逻辑,必须升级到对应版本以上才能生效
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

