11

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

我希望将此测试用例从单元测试覆盖率计算中排除。为了达到这个结果,我这样配置插件:

<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 %)?

4

6 回答 6

11

经过多次尝试并失败后,我得到了它的工作。

  1. 编辑 pom。
  2. mvn clean 测试编译
  3. mvn cobertura:cobertura
  4. 从 Firefox 重新打开页面。(确保页面没有被缓存)

我得到了它的工作:

<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”更改为您要从报告中排除的包名称。

我希望它有帮助,马克安德鲁

于 2014-02-10T15:57:15.177 回答
6

你应该使用<ignore>标签。

<configuration>
  <instrumentation>
    <ignores>
      <ignore>com.example.boringcode.*</ignore>
    </ignores>
  </instrumentation>
</configuration>

<exclude>used within<instrumentation>只是将包从您的检测中排除。在这种情况下,这没什么,因为你什么也没做。

请在此处查看 Mojo Maven Cobertura 插件文档

于 2013-03-05T22:01:49.270 回答
5

是错字吗?

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

co应该是com

顺便说一句,<ignores>指示 Cobertura 忽略对与忽略正则表达式匹配的任何方法的任何调用。在检测期间它不会跳过这些类。为了排除类被检测,<excludes>应该使用。

于 2013-03-06T03:15:05.807 回答
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>

我希望这可能会有所帮助。

于 2013-03-06T03:18:34.510 回答
3

我刚刚失去了两个小时的生命,因为 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>
于 2017-03-15T13:02:31.227 回答
0

除了BertKoor的回答,我想指出,如果您正在执行mvn cobertura:coberturamvn cobertura:cobertura-integration-test直接执行,您的报告仍将包括在您的目标目录中找到的所有检测类的覆盖范围,如此所述!

如果是这种情况,请确保您这样做mvn **clean** cobertura:cobertura是为了首先从以前的构建中清理目标目录,然后检测并运行您的测试。

于 2017-12-19T15:27:25.203 回答