0

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

这里是我的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> 

任何帮助表示赞赏。

回答

0

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

Cobertura项目看起来被抛弃了,所以我没有看到任何理由花时间与不支持的项目集成。我想专注于与JaCoCo的整合,并提供支持即时测试。

相关问题