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

Jetpack Compose UI测试遇‘Instrumentation run failed due to Process crashed’报错求助

解决Jetpack Compose UI测试出现Instrumentation run failed due to Process crashed.的方案

针对你遇到的问题,结合测试代码,给出以下排查和解决方向:

1. 检查Hilt测试的Application配置

Hilt Android测试需要使用HiltTestApplication或自定义的Hilt测试Application类。确保你的测试包下有对应的配置:

  • 在src/androidTest/AndroidManifest.xml中指定测试Application:
<application
    android:name="com.example.yourpackage.HiltTestApplication"
    ...>
</application>

如果没有自定义测试Application,直接使用官方的HiltTestApplication,记得在依赖中添加:

androidTestImplementation "com.google.dagger:hilt-android-testing:2.44"

2. 调整测试Rule的初始化方式

建议使用createAndroidComposeRule替代createComposeRule,后者是纯Compose测试,不依赖Android上下文,而你的测试用到了Hilt(需要Android环境)。修改后的Rule:

@get:Rule(order = 1)
val composeTestRule = createAndroidComposeRule<YourHostActivity>() // 替换为你的宿主Activity类

同时保证setup方法中先完成Hilt注入,再执行后续测试逻辑:

@Before
fun setup() {
    hiltRule.inject()
}

3. 排查资源加载是否引发崩溃

你的测试中加载了/surveyQuestion.json,需确认:

  • 文件是否放在src/androidTest/resources目录下(注意是androidTest的resources,不是main目录下的)
  • loadFileText方法是否正确读取文件,是否存在IO异常或JSON解析错误。可以在测试中添加异常捕获,定位问题:
@Test
fun entryQuestionLayout(){
    try {
        val entryQuestionJson = loadFileText(this, "/surveyQuestion.json")
        val entryQuestion = Gson().fromJsonToArrayList(entryQuestionJson, Question::class.java)[0]
        
        composeTestRule.setContent {
            VitaminScreen(false, entryQuestion, {},{},{})
        }
        
        composeTestRule.onNodeWithText("scientific").assertIsDisplayed()
        composeTestRule.onNodeWithText("professional").assertIsDisplayed()
    } catch (e: Exception) {
        e.printStackTrace()
        throw e
    }
}

4. 检查VitaminScreen的依赖初始化

VitaminScreen可能依赖未被Hilt注入的对象(如ViewModel、Repository等),导致测试中实例化时崩溃:

  • 确保VitaminScreen中所有依赖都通过Hilt注入,测试中Hilt已正确提供这些依赖的实例或模拟实现
  • 如果使用ViewModel,确保在Compose中通过hiltViewModel()获取,而非直接实例化

5. 排查测试环境问题

  • 尝试更换测试设备(比如从模拟器换成真机,或切换不同API版本的模拟器),部分旧API版本的模拟器可能存在Compose测试兼容性问题
  • 关闭设备上占用资源的后台程序,避免因内存不足导致进程崩溃

内容的提问来源于stack exchange,提问作者c-an

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:52:21