1

我正在使用 Cobertura maven 插件 [2.7 版] 来了解我的测试的代码覆盖率。我正在使用 PowerMock [版本 1.6.6] 来模拟依赖对象。但是当我运行mvn cobertura:cobertura并检查报告时,覆盖率保持不变。当我不使用模拟时它工作正常。这是兼容性问题吗?我多次尝试mvn clean以确保报告是新生成的。

这是我的 pom.xml

<properties>
    <powermock.version>1.6.6</powermock.version>
</properties>
<build>
    <plugins>
        <!-- Cobertura plugin for code coverage -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <formats>
                    <format>html</format>
                    <format>xml</format>
                </formats>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${powermock.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>${powermock.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

对此的任何帮助表示赞赏。

4

1 回答 1

0

不幸的是,这很有可能是不可能的。我不知道 Cobertura 究竟是如何工作的,但我怀疑它使用与 JaCoCo 相同的方法并使用 Java 代理修改字节码。但是 PowerMock 在加载类时会从磁盘读取类,因此所有更改都会丢失。Cobertura 可以在编译期间修改类的一个小变化。如果是,那么您可以尝试一下。

Cobertura 项目看起来被遗弃了,所以我看不出有任何理由花时间与不受支持的项目集成。我想专注于与 JaCoCo 的集成并提供支持的动态检测。

于 2017-06-10T20:58:14.730 回答