Android Studio中Kotlin测试报错:类未找到、测试套件为空
我之前在Android Studio Canary版本里也碰到过完全相同的问题——Java测试跑的好好的,Kotlin写的Espresso测试就报类找不到、测试套件为空,折腾了好久才搞定,给你几个针对性的排查和修复步骤:
1. 检查测试相关的Kotlin依赖是否配置完整
很多时候是因为只加了Java测试的依赖,漏了Kotlin测试的适配库。打开你的build.gradle(Module级别),确保下面这些依赖都加了:
androidTestImplementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" // Espresso核心依赖也要确保存在 androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' androidTestImplementation 'androidx.test.ext:junit:1.1.5'
另外要确认kotlin_version和你项目里Kotlin插件版本一致,避免版本不兼容。
2. 确认测试类的包名和目录结构是否正确
Kotlin测试类必须放在src/androidTest/kotlin/对应的包目录下,而不是src/androidTest/java/(Canary版本偶尔会识别异常)。比如你的测试类com.myproject.directoryofwinning.VerifyAppIsAwesomeTest,对应的路径应该是src/androidTest/kotlin/com/myproject/directoryofwinning/VerifyAppIsAwesomeTest.kt。
同时检查类的声明有没有问题:
package com.myproject.directoryofwinning import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.espresso.Espresso.onView import androidx.test.espresso.matcher.ViewMatchers.withId import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class VerifyAppIsAwesomeTest { @Test fun testAppLaunch() { // 你的测试逻辑 } }
确保@RunWith和@Test注解都正确引入,没有拼写错误。
3. 彻底清理项目并重建缓存
Canary版本的缓存经常出问题,光重置配置可能不够,试试这几步:
- 点击AS顶部的
Build->Clean Project - 然后点击
Build->Rebuild Project - 接着点击
File->Invalidate Caches...,勾选Invalidate and Restart,重启AS后再跑测试
4. 检查测试运行配置是否正确
有时候运行配置会默认只扫描Java测试,需要手动调整:
- 打开
Run/Debug Configurations(右上角运行按钮旁的下拉框选Edit Configurations) - 找到你的测试配置,在
Test kind里选择All in package或者Class,确保选中Kotlin测试类所在的包或类 - 确认
Module选项选对了对应的app模块,不要误选其他模块
5. 检查debug版本是否开启了代码压缩
如果你的debug版本也开了混淆,可能会把测试类给处理掉。打开build.gradle的buildTypes部分,确保debug的minifyEnabled是false:
buildTypes { debug { minifyEnabled false // 其他配置 } }
如果上面这些步骤都试了还是不行,可以试试把Kotlin插件更新到最新版本,或者升级Android Studio Canary到后续更稳定的版本——毕竟Canary版本本身就存在不少待修复的bug。
内容的提问来源于stack exchange,提问作者user1228891

