Android Compose+Hilt环境下配置Instrumented测试时遇ComponentActivity ClassNotFoundException问题
解决Instrumented测试中找不到androidx.activity.ComponentActivity的崩溃问题
我来帮你搞定这个崩溃问题,核心原因是你只在主代码模块声明了androidx.activity:activity-compose依赖,但Instrumented测试(androidTest目录)的代码无法直接复用主模块的implementation依赖,导致测试进程启动时找不到对应的类。下面是具体的解决步骤:
1. 为测试模块添加专属依赖
打开app模块的build.gradle(或build.gradle.kts),在dependencies块中添加androidTestImplementation版本的activity依赖:
// Groovy版本 androidTestImplementation 'androidx.activity:activity-compose:1.3.1'
或者KTS版本:
// Kotlin DSL版本 androidTestImplementation("androidx.activity:activity-compose:1.3.1")
建议你用版本变量统一管理依赖版本,比如在项目根目录的
build.gradle中定义ext.activityComposeVersion = "1.3.1",然后在依赖中引用,方便后续升级。
2. 清理并重建项目
依赖添加完成后,执行以下操作确保依赖被正确同步:
- 执行命令行:
./gradlew clean assembleAndroidTest - 或者在Android Studio中点击菜单栏的
Build -> Clean Project,之后再点击Build -> Rebuild Project
3. 检查测试类的Activity配置
确认你的测试类中使用的Compose测试规则是正确绑定到ComponentActivity的,比如:
@get:Rule val composeTestRule = createAndroidComposeRule<ComponentActivity>()
如果这里指定的Activity类仍然报错,说明依赖同步还没完成,再重复第二步的清理重建操作。
完成以上步骤后,测试进程应该就能找到ComponentActivity类,正常启动并执行你的Instrumented测试了。
内容的提问来源于stack exchange,提问作者David Aleksanyan
相关产品推荐
相关产品推荐

