6

有什么东西可以在 Maven 中使用来自动化这种检查吗?我看到了 checkstyle 和 PMD,但我没有找到这个功能。

基本上我希望构建失败,如果有一个类A并且没有一个ATestCase. 我知道,这不是一个严格的检查,可以通过只创建类来轻松绕过,但目前这已经足够了。

4

2 回答 2

3

你在找什么

正如 Jens Piegsa 指出的那样,您正在寻找的是一种向您显示测试覆盖率的工具,换句话说,就是您测试使用的代码百分比。

它允许您以比(至少按类测试)更可靠的方式查看您的代码测试了多少。

您可以使用 Cobertura,它很好地集成在 Maven 中:http: //mojo.codehaus.org/cobertura-maven-plugin/

实现这一目标的方法

POM 配置

只需将此代码段放入您的 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>
于 2013-11-12T14:42:08.863 回答
2

简短的回答:没有。

更长的答案:我曾经写过一个单元测试来断言所有 VO 都有一个无参数的构造函数,我认为你可以在这里使用相同的方法。

基本上,迭代Package.getPackages()(您需要过滤掉 JRE 包,但假设您使用的是合理的命名空间,这应该没问题)。对于每个包,收集所有不以开头或结尾的类,Test并断言每个类都有匹配的测试。

这不是故障安全,但也许足够接近?

干杯,

于 2013-11-12T08:19:00.153 回答