当前位置: 首页 > 知识库问答 >
问题:

Cobertura报告Powermock没有增加代码覆盖率

韩喜
2023-03-14

我正在使用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>

对此我们非常感谢您的帮助。

共有1个答案

经慈
2023-03-14

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

Cobertura项目看起来被放弃了,所以我看不出有什么理由花时间与不受支持的项目集成。我想重点介绍一下与JaCoCo的集成,并提供支持的实时仪器。

 类似资料:
  • 我正在分析一个经过单元测试和Cobertura覆盖的Java项目。报告了xml。我正在使用SonarQube 4.1.1和最新的SonarRunner。我已经成功地将Cobertura覆盖率结果导入到Sonar 3.2和Ant analyzer,但在这个新版本中,我遇到了问题。在新的声纳分析执行(通过Jenkins)中,我在日志中没有看到它会启动任何Cobertura引擎或任何东西。我在Runne

  • 我使用jenkins的代码为每个插件生成覆盖率,并显示我喜欢的管道。是否有一个插件我可以使用它(例如Cobertura,但它似乎不受管道支持)?

  • 我正在为我的grails 3.1.6项目添加cobertura代码覆盖率,覆盖率报告似乎有点少,即我有单元测试用例(pos和neg两种情况)来覆盖if块,但报告说没有覆盖if块。gradle:2.13 Groovy:2.4.5 Grails:3.1.6 cobertura gradle Plugin:net.saliman:gradle-cobertura-plugin:2.3.2 这是我的代码

  • 我有一个反应应用,使用 npx 创建-反应-应用命令创建,并为 CI/CD 配置了一个基于 yaml 的 Azure DevOps 管道。然后我添加了一些简单的单元测试。 我在yaml管道中添加了一个脚本任务,以生成如下覆盖率结果。 但是这个任务显示以下输出,然后任务继续运行,永远不会结束。我必须取消管道运行才能最终停止它。不知道发生了什么。有什么想法吗? 但是,当我以CI =true作为前缀以按

  • 免责声明初学者问题! 为了回答这个问题,我的项目结构高度简化,如下所示: 在阅读了Jeff Knupp关于单元测试的博客文章并写了一系列测试之后,我想看看我的代码现在被测试覆盖了多少。所以我安装了coverage.py,以下内容让我困惑: $coverage运行main。py(显示脚本中的打印/日志) $覆盖报告main.py 姓名、Stmts、小姐、封面 主要的py,114,28,75% 问题是

  • 我的sonarqube服务器版本8.3.1启用了cobertura插件来显示cobertura覆盖报告。现在我想报告Jacoco XML覆盖数据(使用gradle Jacoco插件生成),但它不起作用。cobertura和Jacoco之间是否存在任何已知问题?或者两种机制都应该在一个sonarqube上工作?