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将更改需要指向的目录)
- RegisterResGeneratingTask已弃用,请使用registerGeneratedFolders(FileCollection)
- 尝试在金丝雀上迁移5
- 不寻常的崩溃只有在一些设备 – 异步调用kotlin协同程序
- Kotlingenericstypes,types推断失败
- 无法解析Android Studio 3.0的依赖关系
- Android Studio 3.0 Kotlin无法正常工作
- Gradle 3.0.0(在Android Studio 3.0中)重新排列任务序列(用Kotlin模块编译时)?
- 当我使用Android Studio 3.0时如何存储json数据?
- 错误:找不到符号类为android studio 3.0稳定的java类添加kotlin类