Kotlin类的Android单元测试失败,返回“0”;找不到符号类…”;
我最近在Android应用程序的构建中添加了Kotlin插件,现在我想在InstrumentationTestCase中测试Kotlin类 IntelliJ/Android Studio在编辑器中看到该类,在启动应用程序时该类似乎已被编译,但当我启动Kotlin类的Android单元测试失败,返回“0”;找不到符号类…”;,android,gradle,android-testing,kotlin,Android,Gradle,Android Testing,Kotlin,我最近在Android应用程序的构建中添加了Kotlin插件,现在我想在InstrumentationTestCase中测试Kotlin类 IntelliJ/Android Studio在编辑器中看到该类,在启动应用程序时该类似乎已被编译,但当我启动gradlew assembleTest时,该类失败,并显示“找不到符号[类名称]” 在我的build.gradle中,我将kotlin文件夹添加为srcDir sourceSets { main { manifest.src
gradlew assembleTest
时,该类失败,并显示“找不到符号[类名称]”
在我的build.gradle中,我将kotlin文件夹添加为srcDir
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs += 'src/main/kotlin'
}
}
有什么建议吗
编辑:问题是Kotlin和Retrolambda插件之间的冲突,现已解决。我来自Kotlin项目。你能回答几个问题来帮我重现你的问题吗? 您是从IDE还是从命令行运行
gradlew assembleTest
?依赖项中是否有kotlin stdlib
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
你能给我们提供你的项目吗?我在您的跟踪器中创建了一个问题,因此在此处查看您的答案将非常棒,而在另一个答案中正在调查该问题,这里有一个临时解决方法。将此添加到build.gradle中:
afterEvaluate { project ->
project.tasks.findAll {
it.name.startsWith('compile') && it.name.endsWith('DebugTestJava')
}.each { Task task ->
task.dependsOn copyKotlinToTest
}
}
task copyKotlinToTest(type: Copy) {
from new File(buildDir, 'tmp/kotlin-classes/debug')
into new File(buildDir, 'tmp/kotlin-classes/debugTest')
}
如果您有构建变体,则需要调整文件夹的名称。Natalia,谢谢您的回答。我在这里提供了更多的信息,并指出了解决方法。我的项目相当大,所以我将尝试获取一个最小的工作示例,并将其发布在这里和bug跟踪器上。为了回答另一个问题,是的,我在dependencies中有std库。哦,好吧,似乎问题是出于兼容性原因,我使用的gradle retrolambda插件的旧版本。抱歉这么麻烦。我也有同样的问题(我不使用gradle retrolambda)。我确实在依赖项中有stdlib。Kotlin代码就是这样构建、运行的(我指的是应用程序运行),我只能运行基于
InstrumentationCase
的测试套件。我正在使用Android Studio运行我的单元测试。准确地说,我得到了一个NoClassDefFoundError
异常。我可以提供我的项目给你,如果你有兴趣-这只是爱好代码,我对Kotlin感兴趣,所以我正在尝试。但是不能进行单元测试将是一个阻碍,不幸的是…没有帮助,不幸的是。你能用一个关于你的解决方案的注释更新这个问题吗,你说“这个问题似乎是我正在使用的gradle retrolambda插件的旧版本”在另一条评论中,人们不应该阅读所有评论来了解问题的状态;因为这也不是答案的一部分。