wam_3000 2024-06-05 09:17 采纳率: 7.3%
浏览 24

Jacoco无法统计单元测试数据

最近项目需要用Jacoco统计测试覆盖率,目前发现一个问题,最后生成的报告里,可以统计出http接口调用的数据,但无法统计Junit单元测试的数据,用@Test注释的方法,我执行完后,在index.html的报告里,覆盖率还是0。

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-05 09:17
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用JaCoCo进行Java项目的单元测试覆盖率分析时遇到了问题。JaCoCo通常能很好地与JUnit集成,并计算单元测试的覆盖率。这里有几个可能的原因和相应的解决步骤:

    1. JaCoCo插件配置: 确保在你的构建工具(Maven、Gradle)中正确配置了JaCoCo插件。例如,在pom.xml文件中的Maven配置:
    <build>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.7</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>test-report</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    
    1. JUnit Test Runner: 确保你的测试类是通过JUnit 4或5的TestRunner运行的。如果你使用的是JUnit 4,确保有@RunWith(SpringRunner.class)(如果你使用Spring框架)或其他合适的Runner。对于JUnit 5,不需要额外的runner配置。

    2. 排除目录: 检查JaCoCo是否意外地排除了包含测试类的源码目录。这可以通过在pom.xmlbuild.gradle文件中配置JaCoCo排除规则来实现。

    3. 测试方法不被调用: 确认@Test标记的方法确实被执行了。有时,由于断言失败或其他原因,测试方法可能不会真正运行,这将导致覆盖率显示为0。

    4. IDE集成: 确保你的IDE(如IntelliJ IDEA、Eclipse等)正确地配置了JaCoCo插件,并且在运行测试时包含了JaCoCo的代理参数。通常情况下,IDE会自动处理这些设置,但如果出现问题,你需要手动检查它们。

    5. 重新编译和运行测试: 有时候,简单地清理并重新构建项目可以解决此类问题。在Maven中,可以运行mvn clean install,在Gradle中则运行./gradlew clean build.

    6. 验证覆盖率报告: 确保你查看的是正确的覆盖率报告。JaCoCo可能会分别提供测试类的覆盖率和整个项目的覆盖率。确保你正在查看的是针对测试类的覆盖率部分。

    7. 检查代码格式化: 极端情况下,代码格式化可能导致JaCoCo无法正确匹配原始源代码和字节码。尝试禁用代码格式化,然后再次构建和测试。

    8. 多模块项目: 如果你的项目是一个多模块的Maven或Gradle项目,确保每个模块都正确配置了JaCoCo,并且在汇总报告时包括所有模块。

    如果以上步骤都不能解决问题,那么可能是JaCoCo与其他库或工具之间的兼容性问题。在这种情况下,你可以考虑更新JaCoCo到最新版本,或者查阅JaCoCo的官方文档和社区支持来获取更多帮助。

    记住,JaCoCo只测量实际执行的代码行数,所以如果你的测试没有覆盖到所有的分支(例如if-else语句),覆盖率仍然可能显示为0。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月5日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见