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指向它们之前,可以帮助您手动查找项目中的两个目录,以确保指向正确的位置(flavor将更改需要指向的目录)
- 无法合并dex
- 如何禁用Android Kotlin中的点按钮
- Kotlin中AsyncTask的子类 – 无法在onPostExecute中使用主构造函数参数
- AAR / JAR不会使用Android Studio 3.0 Canary 7生成
- 在子模块中的Android数据绑定
- 无法获取提供者android.arch.lifecycle.LifecycleRuntimeTrojanProvider:java.lang.ClassNotFoundException
- 为什么在AndroidStudio 3.0中运行kotlin测试非常慢?
- jacoco安卓gradle插件android kotlin项目后android android gradle插件到版本3(测试版)
- Java活动不会在布局中显示任何视图