Maven 使用三叶草插件运行两次单元测试

标签 maven clover

我的 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>

最佳答案

三叶草插件fork一个生命周期直到test阶段使用检测的类路径。

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

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

现在是我的标准警告:

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

  • 如果您只在打开覆盖率的情况下运行测试用例,则不能相信 100% 通过率,因为覆盖率可以掩盖错误

    相反,如果您从未在开启覆盖的情况下运行,则 JVM 架构中的任何更改都会突出显示您不知道的新错误。
  • 打开和未打开覆盖率的测试通过 => 可能没问题
  • 测试通过,覆盖范围打开,关闭时失败 => 当心,这里的错误
  • 关闭覆盖的测试通过,打开时失败 => 如果测试对时间不重要,则此处出现错误,但如果测试在生产环境中运行,则错误可能仅在 -server 时显示全面优化热路径
  • 测试在启用和不启用覆盖的情况下失败 => 错误

  • “斯蒂芬的黄金法则:Just run the damn tests twice

    关于Maven 使用三叶草插件运行两次单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15795840/

    相关文章:

    java - 如何用maven管理开发、生产、测试​​配置?

    java - 项目模板 Eclipse/Java

    android - Robotium - 安装目标应用程序作为构建的一部分

    php - Clover XML 报告 - 类和特征覆盖率公式

    java - findBug intellij 中不兼容的位掩码

    java - Azure CI Pipeline 无法使用 2 个项目构建 Java/Maven 解决方案

    java - 使用maven安装命令时包不存在错误

    maven-plugin - Clover 0% Coverage with multiple source directories + build-helper-maven-plugin

    java - 在 Play 上使用 Clover 执行代码覆盖!使用 Ant 的框架应用程序