Maven使用clover插件运行两次单元测试

cod*_*ons 7 clover maven

我在我的pom.xml中有这个插件代码.如果我删除此插件,那么Maven将不会运行两次单元测试.我只是想知道这个插件的哪个部分使单元测试运行两次.

<plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-clover2-plugin</artifactId>
    <version>3.0.4</version>
    <configuration>
        <licenseLocation>/location/to/clover.license</licenseLocation>
        <generateXml>true</generateXml>
        <generateHtml>true</generateHtml>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>instrument</goal>
            </goals>
        </execution>
        <execution>
            <id>main</id>
            <phase>verify</phase>
            <goals>
                <goal>instrument</goal>
                <goal>aggregate</goal>
                <goal>clover</goal>
            </goals>
        </execution>
        <execution>
            <id>site</id>
            <phase>pre-site</phase>
            <goals>
                <goal>instrument</goal>
                <goal>aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

Ste*_*lly 8

三叶草插件test使用已检测的类路径将生命周期分配到阶段.

您的标准生命周期将运行测试(通常在test阶段使用surefire ,但可能有多个执行或其他测试插件在该阶段调用测试)

然后三叶草出现并要求他们再次运行.

现在我的标准警告:

  • 代码覆盖率修改以JVM规范下合法的方式执行的字节代码.
  • 这种变换可以在更新覆盖图时导致添加同步点.
  • 这样的附加同步点可以限制JVM能够执行的操作的重新排序.
  • 还有其他不与线程相关的更改,但解释起来相当复杂.

如果您只打开覆盖范围的测试用例,则不能相信100%的通过率,因为覆盖可以掩盖错误

相反,如果您从未在启用覆盖范围的情况下运行,那么JVM体系结构中的任何更改都可以突出显示您不知道的新错误.

  • 打开和不打开覆盖的测试通过=>可能没问题

  • 打开覆盖范围的测试通过,关闭时失败=>小心,此处有错误

  • 关闭覆盖范围的测试通过,打开时失败=>如果测试不是时间关键,那么这里的错误,但是如果测试在生产环境上运行,则错误可能仅在-server完全优化热路径时显示

  • 打开和不打开覆盖的测试失败=> bug

"史蒂芬的黄金法则:两次该死的测试 "