Unit testing 是否有办法仅在新代码上获得单元覆盖率(如来自jacoco)?

Unit testing 是否有办法仅在新代码上获得单元覆盖率(如来自jacoco)?,unit-testing,code-coverage,jacoco,jacoco-maven-plugin,Unit Testing,Code Coverage,Jacoco,Jacoco Maven Plugin,我的假设情景是: 我已经运行了junit测试并生成了一个jacoco文件 我的git diff显示我已经更改了10行代码 现在,我的git diff和jacoco信息的交叉点是,更改的10行代码中有7行被覆盖。ie-我有70%的新代码覆盖率 但我必须手动解决这个问题 我想用一种自动化的方法计算出新代码行的覆盖率 我的问题是:有没有办法只在新代码上获得单元覆盖率(如从jacoco获得的)? (注意,我知道如果您使用analysis.mode=publish运行扫描器并使用JSON API查询任

我的假设情景是:

  • 我已经运行了junit测试并生成了一个jacoco文件
  • 我的git diff显示我已经更改了10行代码
现在,我的git diff和jacoco信息的交叉点是,更改的10行代码中有7行被覆盖。ie-我有70%的新代码覆盖率

但我必须手动解决这个问题

我想用一种自动化的方法计算出新代码行的覆盖率

我的问题是:有没有办法只在新代码上获得单元覆盖率(如从jacoco获得的)?

(注意,我知道如果您使用
analysis.mode=publish
运行扫描器并使用JSON API查询任务结果,您可以做到这一点-我正在寻找开发人员可以在本地运行的轻量级工具。)

了解以下内容:

然后使用此项目:

Jacoco+

这是我的工作。CI外壳脚本:

export PATH="${jobPath}"/buildbox/Python-3.8.2/bin:$PATH
python --version
python -m pip install -i http://xx.xx.xx.com/artifactory/api/pypi/xx-pypi-public/simple/ --trusted-host xx.xx.xx.com diff_cover==4.0.1

mvn clean test -Dmaven.test.failure.ignore=true

diff-cover "${WORKSPACE}"/xxx-test/target/site/jacoco/jacoco.xml --compare-branch origin/"${target_branch}" --src-roots $(find . -name java -type d | grep 'src/main/java$' | egrep -v "target|test|testkit") --html-report ${WORKSPACE}/xxx-test/target/site/jacoco/index.html
有两个插件:

  • 格拉德尔:
  • 马文:
两者都构建在JaCoCo之上,能够生成类似JaCoCo的报告。


此外,如果您的覆盖率低于预期,他们可能会导致构建失败(覆盖率由插件配置)

Gradle也可以这样做吗?