Maven中可以使用某些东西来自动执行这种检查吗?我看到检查样式和 PMD,但我找不到此功能。
基本上,如果有一个类A
并且没有ATestCase
,我希望构建失败。我知道,这不是一个严格的检查,可以通过创建类来轻松绕过,但目前这就足够了。
你在寻找什么
正如Jens Piegsa指出的那样,您正在寻找的是一个显示测试覆盖率的工具,换句话说,测试使用的代码百分比。
它允许你查看你的代码被测试了多少,以一种真正比(至少按类测试)更可靠的方式。
你可以使用Cobertura,它很好地集成在Maven:http://mojo.codehaus.org/cobertura-maven-plugin/
实现这一目标的方法
聚甲醛配置
只需将此代码片段放在您的pom中即可.xml
<project>
...
<reporting>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</reporting>
</project>
跑步覆盖率
并运行
mvn cobertura:cobertura
或运行报告阶段(与站点生成绑定)
mvn site:site
添加质量阈值
如果要使低覆盖率构建无效,甚至可以添加失败阈值
<plugin>
[...]
<configuration>
<check>
<!-- Fail if code coverage does not respects the goals -->
<haltOnFailure>true</haltOnFailure>
<!-- Per-class thresholds -->
<lineRate>80</lineRate>
<!-- Per-branch thresholds (in a if verify that if and else are covered-->
<branchRate>80</branchRate>
<!-- Project-wide thresholds -->
<totalLineRate>90</totalLineRate>
<totalBranchRate>90</totalBranchRate>
</check>
</configuration>
</plugin>
简短回答:不。
更长的答案:我曾经写过一个单元测试来断言所有 VO 都有一个 no-args 构造函数,我认为你可以在这里使用相同的方法。
基本上,遍历Package.getPackages()
(您需要过滤掉 JRE 包,但假设您使用的是合理的命名空间,这应该没有问题)。对于每个包,收集所有不以 Test
开头或结尾的类,并断言每个类都有一个匹配的测试。
它不是万无一失的,但也许足够接近?
干杯