Kotlin Android项目Instrumentation Tests运行异常:编辑器启动无测试发现
看起来你遇到的是Ubuntu环境下Android Studio对Kotlin Instrumented Tests的识别偏差问题——确实,旧版本的Kotlin插件和Gradle在跨系统时容易出现这类测试分类错误,尤其是编辑器的运行配置会误把Instrumented Tests当成本地Unit Tests执行。下面是几个针对性的解决方案,按顺序尝试应该能解决问题:
确认测试目录的IDE标记
首先检查你的Instrumented Tests是否放在src/androidTest/kotlin目录下,然后右键这个目录,选择Mark Directory as -> Android Instrumentation Test Sources Root。Ubuntu下的Android Studio有时候对Kotlin目录的类型识别会滞后,手动标记能强制IDE识别这是Instrumented测试目录,而非普通Unit Test目录。修正运行配置类型
当你点击编辑器的绿色箭头启动测试时,IDE可能自动创建了错误的运行配置。你可以通过Run -> Edit Configurations打开配置窗口:- 检查配置的“Test kind”是否为
Android Instrumented Tests,如果是JUnit就说明被当成了本地单元测试; - 修改配置类型为
Android Instrumented Tests,并指定正确的模块和目标设备; - 保存配置后重新运行测试。
- 检查配置的“Test kind”是否为
升级Kotlin插件和Gradle版本
你当前使用的Kotlin 1.2.21和Gradle 3.0.1都是比较老旧的版本,这些版本在Ubuntu系统上的兼容性问题较多。建议升级到稳定的新版本:- Kotlin插件升级到1.8.x或更高(直接在Android Studio插件市场更新);
- Gradle升级到7.x或8.x(注意匹配对应的Android Gradle Plugin版本,比如Gradle 7.4对应AGP 7.2.0);
新版本的工具链修复了很多跨系统的测试识别问题,能从根源减少这类错误。
显式指定测试运行器
在你的Instrumented测试类上添加@RunWith(AndroidJUnit4::class)注解,强制IDE识别这是Android Instrumented测试,避免被误判为普通JUnit测试:import androidx.test.runner.AndroidJUnit4 import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class MySampleInstrumentedTest { // 你的测试代码 }如果你还在使用旧的Support库,把
androidx.test.runner.AndroidJUnit4换成com.android.support.test.runner.AndroidJUnit4即可。清理IDE缓存并重建项目
Ubuntu下的Android Studio缓存偶尔会出现异常,导致测试识别错误。执行File -> Invalidate Caches...,选择Invalidate and Restart,重启后再执行Build -> Rebuild Project,彻底清理缓存并重新构建项目,很多时候能解决这类奇怪的识别问题。检查Gradle脚本配置
确保Module级的build.gradle文件里正确配置了Instrumented测试的依赖和运行器:android { defaultConfig { // AndroidX环境下的配置 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" // Support库环境下的配置 // testInstrumentationRunner "com.android.support.test.runner.AndroidJUnitRunner" } } dependencies { // AndroidX依赖示例 androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // Support库依赖示例 // androidTestImplementation 'com.android.support.test:runner:1.0.2' // androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }错误的依赖配置也会导致IDE无法正确识别测试类型。
内容的提问来源于stack exchange,提问作者DefaultXYZ

