【问题标题】:Android Studio 3.0 gradle 3.0.0-beta2, breaks Kotlin Unit Test Coverage?Android Studio 3.0 gradle 3.0.0-beta2,打破 Kotlin 单元测试覆盖率?
【发布时间】:2017-08-22 13:56:57
【问题描述】:

我有一个简单的 Kotlin 类,如下所示

class MyClass {
    fun justSayHello(yes: Boolean): String {
        if (yes) {
            return "Hello"
        } else {
            return "Sorry"
        }
    }
}

我有我的测试(这里用 Java 编写,也可以用 Kotlin 编写)

public class MyClassTest {
    private MyClass myClass = new MyClass();

    @Test
    public void testFirst() {
        myClass.justSayHello(true);
    }

    @Test
    public void testSecond() {
        myClass.justSayHello(false);
    }
}

当我在 Android Studio 3.0 Beta-2 中使用 classpath 'com.android.tools.build:gradle:3.0.0-beta2' 运行覆盖率测试时,没有报告覆盖率。

但是当我使用classpath 'com.android.tools.build:gradle:2.3.3' 运行测试时,报告的覆盖率为 100%。

当我将源代码更改为 Java 时:

public class MyClass {
    public String justSayHello(boolean yes) {
        if (yes) {
            return "Hello";
        } else {
            return "Sorry";
        }
    }
}

它适用于两个 gradle 构建工具

在我看来,'com.android.tools.build:gradle:3.0.0-beta2' 对 Kotlin 的测试覆盖率测量有问题。

我错过了什么吗?是否有一种解决方法可以让我在 Kotlin 中获得测试覆盖率?

【问题讨论】:

标签: android kotlin code-coverage jacoco android-studio-3.0


【解决方案1】:

如果有人仍在寻找解决方案,添加一个 gradle 任务以将案例从 tmp 目录复制到覆盖输出所在的目录中有助于解决此问题作为一种解决方法。

例如将 copyTestClasses 添加到您的模块 gradle 文件中

task copyTestClasses(type: Copy) {
    from "build/tmp/kotlin-classes/debug"
    into "build/intermediates/classes/debug"
}

然后设置您的默认值以在运行测试之前运行 gradle 任务

在尝试使用 gradle 指向它们之前手动查找项目中的两个目录会有所帮助,以确保您指向正确的位置(口味会改变您需要指向的目录)

【讨论】:

  • 这是在stackoverflow.com/a/45354933/3286489 中报告的。但是如果仔细观察,它报告的是测试代码的覆盖率,而不是应用程序代码。 :(
  • 报告测试类覆盖率的原因是它是从 /debugUnitTest 复制而不是 /debug
  • 如果没有 kotlin 类就没有调试文件夹
  • 还是和Android Studio 3.0.1一样,我打了个勾:issuetracker.google.com/u/1/issues/73730680
  • 另外,如果您将模块用作普通的 kotlin lib,请改用:task copyTestClasses(type: Copy) { from "build/classes/kotlin" into "build/classes/java" }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 2018-10-18
  • 2021-02-24
相关资源
最近更新 更多