gpt4 book ai didi

java - Maven 和 Gradle 之间的 Clover 代码覆盖行为不同

转载 作者:行者123 更新时间:2023-11-30 02:39:29 25 4
gpt4 key购买 nike

我正在将 Maven 项目迁移到 Gradle,但我的代码覆盖率插件存在问题:Clover。我对覆盖率计算有一个无法解释的行为。让我们举一个简单的例子:

// ProjectA

class A
{
void method1()
{
// Some stuff
// This method is covered by a unit test in ProjectA
}

void method2()
{
// Some stuff
// This method is not covered by any unit test in ProjectA
}
}

// ProjectB

class B
{
void method3()
{
new A().method2();
// Some stuff
// This method is covered by a unit test in ProjectB
}
}

我有 2 个不同的项目:ProjectAProjectBProjectB 依赖于 ProjectA

ProjectA 包含一个名为 A 的类。 A 中的 method1ProjectA 中包含的单元测试覆盖。 ProjectA 中包含的任何测试均未涵盖 method2

ProjectB 包含一个名为 B 的类。 B 中的 method3ProjectB 中包含的单元测试覆盖。 method3ProjectA 中的类 A 调用 method2

事实:

使用 Maven 和 Clover(官方插件),method2 被认为是覆盖的,因为它是从单元测试覆盖的方法 (method3) 调用的,即使测试是在不同的项目中。对于 Gradle 和 Clover ( unofficial plugin ),method2 被视为未覆盖,因为 ProjectA 中没有专门的测试。

配置比较基本,Maven 和 Gradle Clover 插件没有太大区别。

我的问题:

Clover 的正常/默认行为是什么?可以通过配置来设置此行为吗?或者这是 Gradle Clover 插件中的某种错误?

最佳答案

现在我们已经摆脱了乐趣并排除了 JaCoCo,我认为您需要向 clover 提供 additional source dirs

例如:

apply plugin: 'com.bmuschko.clover'

evaluationDependsOn ':someOtherProject'
clover {
additionalSourceDirs = project(':someOtherProject').sourceSets.main.allSource.srcDirs
}

关于java - Maven 和 Gradle 之间的 Clover 代码覆盖行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42156467/

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