cobertura-maven-plugin排除配置

时间:2013-03-05 21:54:55

标签: java maven maven-3 cobertura

我在目录DefaultViewTypeToFragmentMapperTest.java中有一个带有测试用例/src/test/java/test/com/mycompany/myproduct/android/viewtype2fragmentmapper/的Maven项目。

我希望将此测试用例排除在单元测试覆盖率计算之外。为了实现这个结果,我配置了这样的插件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.5.2</version>
    <configuration>
        <formats>
            <format>html</format>
            <format>xml</format>
        </formats>
        <instrumentation>
            <excludes>
                <exclude>test/co/**/*.class</exclude>
            </excludes>
        </instrumentation>
    </configuration>
</plugin>

但我仍然在报道报告中看到上述课程。

如何修复此问题,以便测试用例不会出现在报告中,并且不考虑其覆盖率(根据报告为0%)?

6 个答案:

答案 0 :(得分:9)

经过多次尝试和失败后,我开始工作了。

  1. 编辑pom。
  2. mvn clean test-compile
  3. mvn cobertura:cobertura
  4. 从Firefox重新打开该页面。 (确保页面未缓存)
  5. 我得到了它:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>2.6</version>
            <configuration>
                <instrumentation>
                    <excludes>
                        <exclude>aaa/**/*.class</exclude>
                        <exclude>com/test/bbb/**/*.class</exclude>
                    </excludes>
                </instrumentation>
            </configuration>
     </plugin>
    

    使用要排除的包名称的开头更改'aaa'。 使用您要从报告中排除的包名更改“bbb”。

    我希望它有所帮助, Marc Andreu

答案 1 :(得分:6)

您应该使用<ignore>标记。

<configuration>
  <instrumentation>
    <ignores>
      <ignore>com.example.boringcode.*</ignore>
    </ignores>
  </instrumentation>
</configuration>
<exclude>中使用的{p> <instrumentation>只是将您的工具包排除在外。在这种情况下,这没什么,因为你没有做任何事情。

请参阅Mojo Maven Cobertura Plugin docs here

答案 2 :(得分:5)

这是一个错字吗?

<exclude>test/co/**/*.class</exclude>

co <​​/ strong>应为 com

BTW,<ignores>指示Cobertura忽略对任何与ignore正则表达式匹配的方法的任何调用。它将 NOT 在仪表期间跳过这些类。要从检测中排除类,应使用<excludes>

答案 3 :(得分:4)

您不应将.class附加为以下示例

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.5.2</version>
    <configuration>
        <formats>
            <format>html</format>
            <format>xml</format>
        </formats>
        <instrumentation>
            <excludes>
                <exclude>test/co/**/*</exclude>
            </excludes>
        </instrumentation>
    </configuration>
</plugin>

我希望这可能有所帮助。

答案 4 :(得分:2)

我只是失去了两个小时的生命,因为Cobertura被排除在外,但终于成功了。

我找到的解决方案是带有仪器和插件的插件配置。排除cobertura-maven-plugin必须在pom的build / plugins或build / pluginManagement章节中,而必须是报告章节中cobertura-maven-plugin的引用。

这里的缺陷是你最初开始在报告章节定义插件,否则不会生成报告。但是仪器本身并没有从pom的那一部分中获取任何配置。您需要在构建章节中定义它。

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <instrumentation>
                        <excludes>
                            <exclude>my/exclusion/package/**</exclude>
                        </excludes>
                    </instrumentation>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<reporting>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>

答案 5 :(得分:0)

除了BertKoor的答案之外,我还想指出,如果您直接执行mvn cobertura:coberturamvn cobertura:cobertura-integration-test,您的报告将仍然包括目标目录中找到的所有已检测类的覆盖范围,如报告here

如果是这种情况,请确保执行mvn **clean** cobertura:cobertura以便先从之前的版本中清除目标目录,然后并运行测试。