gpt4 book ai didi

java - 如何获得 Maven 多模块项目的完整代码覆盖率

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:36 26 4
gpt4 key购买 nike

想象一个多模块的 Maven 项目,例如下面的项目:

parent
+- core
+- main

main依赖于 core模块。

我现在写一个类CoreClasscore ,有两种方法:method1()method2() .在 core测试,我写了一个只测试CoreClass.method1()的测试类.

如果我运行覆盖率工具(在我的例子中是 Cobertura,使用 mvn sonar:sonar ),我会发现我在 CoreClass 上获得了 50% 的测试覆盖率(如果我们想象这两种方法具有相同的长度)。

到目前为止,一切正常。

现在,在 main项目,我编写了一个测试类来测试 CoreClass.method2() .所以通常,我希望在CoreClass 上有100% 的线路覆盖当我对整个项目进行分析时。

但是,我仍然得到 50%

我理解这是一种综合行为。事实上,Cobertura 将仪器CoreClass仅在 core 上执行测试期间用于覆盖率分析模块,而不是 main .这解释了为什么我仍然有 50% 的代码覆盖率。

但是,我的问题是想知道是否有办法获得 CoreClass真实 代码覆盖率当我在所有模块上运行测试时。

谢谢!

ps:我知道在一个完美的世界里,这不是main的关注点。模块测试 core类。但正如您所知,我们并不是一个完美的世界 :o)

技术信息:Java 1.6、JUnit 4.8.1、Maven 2.0.9(即将升级到 2.2.1,但我认为这并不重要)、Sonar 2.8

最佳答案

使用 jacoco 和 sonar,所有模块都有一个 jacoco.exec 文件结果。Sonar 将使用此文件并报告每个模块的正确覆盖率。我已经成功地将它用于 Sonar 的多模块项目

关于java - 如何获得 Maven 多模块项目的完整代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com