【问题标题】:Why are my Jacoco Reports not reflecting Unit Test coverage on my Android Project?为什么我的 Jacoco 报告没有反映我的 Android 项目的单元测试覆盖率?
【发布时间】:2022-11-09 17:24:40
【问题描述】:

我使用了 Android Studio 中的默认基本模板。我添加了一个失败的测试以确保一切正常......

class ExampleUnitTest {
    @Test
    fun addition_isCorrect() {
        assertEquals(4, 2 + 2)
    }
    @Test
    fun addition_isCorrect2() {
        assertEquals(3, 2 + 2)
    }
}

我跑了build.gradle,看到它失败了。接下来我将以下内容添加到应用程序build.gradle

android {
    ...
    buildTypes {
        ...
        debug {
            testCoverageEnabled true
        }
    }
}

我运行了gradle test,它按预期失败了,但是当我运行gradle createDebugCoverageReport 时它并没有失败。该报告确实已创建,但并未反映我添加的测试的覆盖范围(这是有道理的,因为测试似乎没有运行)。

我缺少什么以及如何让 Jacoco 报告正确反映覆盖范围。这应该可以使用 Android Studio 和基本活动项目重新创建。

这是我尝试添加以增加覆盖率的测试示例...

@Test
fun addition_isCorrect() {
    val test = FirstFragment();
    test.onDestroyView()
    Assert.assertEquals(4, 2+2)
}

我知道这不是一个很好的测试,但更多的是表明覆盖范围目前正在发挥作用。

更新

我确实注意到我只有一个 /build/reports/coverage/androidTest 文件夹而不是 /build/reports/coverage/test 文件夹来反映单元测试覆盖率。因此,似乎只有集成测试正在运行。

我也试过这个...

https://about.codecov.io/blog/code-coverage-for-android-development-using-kotlin-jacoco-github-actions-and-codecov/

https://gist.github.com/mrsasha/384a19f97cdeba5b5c2ea55f930fccd4

但我明白了

无法为 org.gradle.testing.jacoco.tasks.JacocoReport 类型的任务“:app:testDebugUnitTestCoverage”设置只读属性“classDirectories”的值。

【问题讨论】:

    标签: android jacoco android-studio-3.0


    【解决方案1】:

    @Jackie,您是否找到了覆盖测试文件夹的任何解决方案。

    【讨论】:

      猜你喜欢
      • 2016-04-07
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多