【问题标题】:Clover code coverage behavior differs between Maven and GradleMaven 和 Gradle 之间的 Clover 代码覆盖率行为不同
【发布时间】:2017-02-10 10:02:10
【问题描述】:

我正在将一个 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 的类。来自Amethod1 包含在ProjectA 中的单元测试中。 method2 不包含在 ProjectA 中包含的任何测试中。

ProjectB 包含一个名为 B 的类。来自Bmethod3 包含在ProjectB 中的单元测试中。 method3A 类中的 ProjectA 中调用 method2

事实:

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

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

我的问题:

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

【问题讨论】:

  • 你被三叶草捆绑了吗?在我看来,JaCoCo 优于 clover,因为它可以在不操作类文件的情况下即时检测(使用 java 代理)。这是 gradle 构建的事实标准
  • 呵呵...所以也切换到mockito...(半开玩笑,半不是!)
  • 也使用 Mockito 但也使用 PowerMockito ;)

标签: java maven gradle code-coverage clover


【解决方案1】:

既然我们已经把乐趣排除在外并排除了 JaCoCo,我认为你需要为 clover 提供additional source dirs

例如:

apply plugin: 'com.bmuschko.clover'

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

【讨论】:

  • 有趣的想法。我会对其进行测试并回复您。
  • 我的回答有问题,Could not find property 'sourceSets' 问题,与这个问题有关我猜stackoverflow.com/questions/15347364/… 无论如何,我硬编码了ProjectA 的路径(为了测试,暂时),它的工作!我在项目根目录下的 clover.xml 文件被适当的覆盖。我必须弄清楚这个 sourceSets 问题,但我最初的问题是固定的。谢谢。
  • 更新了我的答案以包括evaluationDependsOn ':someOtherProject'
  • 实际上我没有使用evaluationDependsOn,我的项目架构有点过于复杂,但是将指令移到更好的地方就可以了。无论如何,这并没有改变最初的答案是完全准确的事实。
猜你喜欢
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多