Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin类的Android单元测试失败,返回“0”;找不到符号类…”;_Android_Gradle_Android Testing_Kotlin - Fatal编程技术网

Kotlin类的Android单元测试失败,返回“0”;找不到符号类…”;

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

我最近在Android应用程序的构建中添加了Kotlin插件,现在我想在InstrumentationTestCase中测试Kotlin类

IntelliJ/Android Studio在编辑器中看到该类,在启动应用程序时该类似乎已被编译,但当我启动
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插件的旧版本”在另一条评论中,人们不应该阅读所有评论来了解问题的状态;因为这也不是答案的一部分。