Maven 和 Gradle 之间的 Clover 代码覆盖行为不同
Clover code coverage behavior differs between Maven and Gradle
我正在将一个 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 个不同的项目:ProjectA
和 ProjectB
。 ProjectB
取决于 ProjectA
.
ProjectA
包含一个名为 A
的 class。 A
中的 method1
包含在 ProjectA
中包含的单元测试中。 method2
未包含在 ProjectA
.
中的任何测试中
ProjectB
包含一个名为 B
的 class。 B
中的 method3
包含在 ProjectB
中包含的单元测试中。 method3
在 ProjectA
.
中从 class A
调用 method2
事实:
使用 Maven 和 Clover(官方插件),method2
被认为是覆盖的,因为它是从单元测试覆盖的方法 (method3
) 调用的,即使该测试在不同的项目中.
对于 Gradle 和 Clover (unofficial plugin),method2
被认为是未覆盖的,因为 ProjectA
.
中没有专门的测试
配置比较基础,Maven和Gradle Clover插件没有太大区别。
我的问题:
Clover 的正常/默认行为是什么?
可以通过配置设置此行为吗?
或者这是 Gradle Clover 插件中的某种错误?
既然我们已经把乐趣排除在外并排除了 JaCoCo,我认为您需要为三叶草提供 additional source dirs
例如:
apply plugin: 'com.bmuschko.clover'
evaluationDependsOn ':someOtherProject'
clover {
additionalSourceDirs = project(':someOtherProject').sourceSets.main.allSource.srcDirs
}
我正在将一个 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 个不同的项目:ProjectA
和 ProjectB
。 ProjectB
取决于 ProjectA
.
ProjectA
包含一个名为 A
的 class。 A
中的 method1
包含在 ProjectA
中包含的单元测试中。 method2
未包含在 ProjectA
.
ProjectB
包含一个名为 B
的 class。 B
中的 method3
包含在 ProjectB
中包含的单元测试中。 method3
在 ProjectA
.
A
调用 method2
事实:
使用 Maven 和 Clover(官方插件),method2
被认为是覆盖的,因为它是从单元测试覆盖的方法 (method3
) 调用的,即使该测试在不同的项目中.
对于 Gradle 和 Clover (unofficial plugin),method2
被认为是未覆盖的,因为 ProjectA
.
配置比较基础,Maven和Gradle Clover插件没有太大区别。
我的问题:
Clover 的正常/默认行为是什么? 可以通过配置设置此行为吗? 或者这是 Gradle Clover 插件中的某种错误?
既然我们已经把乐趣排除在外并排除了 JaCoCo,我认为您需要为三叶草提供 additional source dirs
例如:
apply plugin: 'com.bmuschko.clover'
evaluationDependsOn ':someOtherProject'
clover {
additionalSourceDirs = project(':someOtherProject').sourceSets.main.allSource.srcDirs
}