我有一个简单的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的测试问题?
答案 0 :(得分:6)
如果有人仍在寻找解决方案,添加gradle任务以将案例从tmp目录复制到coverage输出所在的目录中有助于解决此问题。
例如,将copyTestClasses添加到模块gradle文件
task copyTestClasses(type: Copy) {
from "build/tmp/kotlin-classes/debug"
into "build/intermediates/classes/debug"
}
在尝试使用gradle指向它们之前,可以帮助手动查找项目中的两个目录,以确保指向正确的位置(flavor会更改您需要指向的目录)