有什么东西可以在 Maven 中使用来自动化这种检查吗?我看到了 checkstyle 和 PMD,但我没有找到这个功能。
基本上我希望构建失败,如果有一个类A
并且没有一个ATestCase
. 我知道,这不是一个严格的检查,可以通过只创建类来轻松绕过,但目前这已经足够了。
有什么东西可以在 Maven 中使用来自动化这种检查吗?我看到了 checkstyle 和 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 都有一个无参数的构造函数,我认为你可以在这里使用相同的方法。
基本上,迭代Package.getPackages()
(您需要过滤掉 JRE 包,但假设您使用的是合理的命名空间,这应该没问题)。对于每个包,收集所有不以开头或结尾的类,Test
并断言每个类都有匹配的测试。
这不是故障安全,但也许足够接近?
干杯,