Android Studio 3.0 gradle 3.0.0-beta2,打破Kotlinunit testing覆盖?

我有一个简单的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); } } 

当我使用classpath 'com.android.tools.build:gradle:3.0.0-beta2'在Android Studio 3.0 Beta-2中使用Coverage运行测试时,不会报告其覆盖范围。

但是当我使用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的测试覆盖率?

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

例如,添加copyTestClasses到你的模块gradle文件

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

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

在尝试使用gradle指向它们之前,可以帮助您手动查找项目中的两个目录,以确保指向正确的位置(flavor将更改需要指向的目录)