You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用testCoverageEnabled无测试用例,生成覆盖率报告失败求助

解决Android代码覆盖率报告中的「Instrumentation run failed due to 'Process crashed.'」和「No tests found」问题

你遇到的这两个问题其实是关联的:「No tests found」通常是根源,当测试运行器找不到符合要求的测试用例时,Instrumentation进程很容易崩溃抛出「Process crashed」错误。结合你复现问题的示例项目,我们可以从以下几个方面逐一排查修复:

1. 先解决「No tests found」核心问题

测试运行器识别不到测试用例,大概率是测试类/方法不符合规范,你可以按以下要点检查:

  • 测试类的注解与继承规范:
    • 如果你写的是插桩测试(放在androidTest目录下):
      • 测试类必须添加@RunWith(AndroidJUnit4.class)注解
      • 每个测试方法都要标注@Test,且方法是public void类型、无参数
    • 如果你写的是本地单元测试(放在test目录下):
      • JUnit4风格的测试需要给方法加@Test注解
      • JUnit3风格的测试类必须继承TestCase类
  • 测试类的存放位置与访问权限:
    • 确保测试类放在正确的目录:androidTest对应设备端插桩测试,test对应本地单元测试,不要放混
    • 测试类和测试方法必须是public修饰的,否则测试运行器无法扫描到
  • 排除构建配置的过滤:
    检查模块的build.gradle,有没有通过testOptions或其他配置排除了测试类的扫描范围

2. 修复Instrumentation进程崩溃问题

解决完测试用例的识别问题后,再针对进程崩溃做补充配置:

  • 配置正确的测试运行器:
    在模块的build.gradle的defaultConfig中,确保指定了兼容的测试运行器:
    android {
        defaultConfig {
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    }
    
  • 确认测试依赖完整:
    确保build.gradle中引入了必要的测试库,比如:
    dependencies {
        // 插桩测试依赖
        androidTestImplementation 'androidx.test.ext:junit:1.1.5'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
        // 本地单元测试依赖
        testImplementation 'junit:junit:4.13.2'
    }
    
    缺失依赖会导致Instrumentation进程启动时崩溃
  • 清理重建项目:
    执行以下命令清理缓存并重新构建,避免旧缓存干扰测试识别:
    ./gradlew clean
    ./gradlew createDebugCoverageReport
    
  • 检查设备状态:
    重启你的Pixel 2模拟器(Android 8.1.0),确保模拟器没有异常进程,且系统版本与你使用的测试库兼容(部分新测试库可能需要更高API级别,可尝试降低测试库版本或升级模拟器API)

最后验证

当你完成以上配置后,重新运行代码覆盖率生成任务,应该能正常识别测试用例并生成报告,不会再出现进程崩溃的问题。

内容的提问来源于stack exchange,提问作者Julian Suarez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:03:57