Android测试执行失败:Process crashed及InitializationProvider异常求助
解决connectedAndroidTest测试通过后崩溃:InitializationProvider资源找不到异常
执行gradlew connectedAndroidTest时,所有测试用例均执行通过,但测试运行最终失败,提示:
Test run failed to complete. Instrumentation run failed due to Process crashed.
核心异常栈:
java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: android.content.res.Resources$NotFoundException: String resource ID #0x7f10002b
环境配置
// 依赖项 junit:junit:4.13.2 androidx.test:core:1.5.0 androidx.compose.ui:ui-test-junit4:1.5.3 androidx.compose.ui:ui-test-manifest:1.5.3 androidx.test:runner:1.5.0 // 构建配置 agp = 8.2.2 compileSdk = 34 compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
解决方案
1. 定位缺失的资源ID
- 前往项目路径
build/generated/not_namespaced_r_class_sources/debug/r/<你的包名>/R.java,搜索0x7f10002b,找到对应的资源名称。 - 确认该资源是否被误删除、未包含在测试变体编译范围内,或是依赖库中存在资源缺失。
2. 禁用App Startup自动初始化
在AndroidManifest.xml中移除App Startup的初始化Provider,避免测试结束阶段触发不必要的初始化逻辑:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <!-- 其他配置 --> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="remove"> <meta-data android:name="androidx.startup.InitializationProvider" tools:node="remove" /> </provider> </manifest>
3. 清理缓存并重建项目
执行以下命令彻底清理构建缓存,避免旧资源残留导致的不匹配:
./gradlew clean ./gradlew assembleDebugAndroidTest ./gradlew connectedAndroidTest
4. 调整测试Runner配置
尝试更换测试Runner为androidx.test.ext.junit.runners.AndroidJUnit4,并确保测试类注解正确:
@RunWith(AndroidJUnit4::class) class SampleComposeTest { // 测试用例实现 }
5. 统一依赖版本兼容性
升级测试相关依赖到匹配AGP 8.2.2的版本,避免版本冲突:
androidx.test:core:1.5.2 androidx.test:runner:1.5.2
内容的提问来源于stack exchange,提问作者Nurakhmet Zunun
相关产品推荐
相关产品推荐

