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

使用Jetpack Compose+Hilt+JUnit4做Android UI测试时遇报错求助

解决Hilt UI测试应用配置错误

问题原因

Hilt测试要求使用专门的测试应用(HiltTestApplication或自定义测试应用),你的测试当前默认使用了主应用的@HiltAndroidApp类,导致规则冲突。

解决方案

1. 确认测试依赖配置

在Module级别的build.gradle(或build.gradle.kts)中添加Hilt测试依赖,版本需与项目中Hilt主版本保持一致:

// Groovy示例
androidTestImplementation "com.google.dagger:hilt-android-testing:2.48"
kaptAndroidTest "com.google.dagger:hilt-compiler:2.48"

// Kotlin DSL示例
androidTestImplementation("com.google.dagger:hilt-android-testing:2.48")
kaptAndroidTest("com.google.dagger:hilt-compiler:2.48")

2. 配置测试应用

方式一:使用默认HiltTestApplication

在androidTest目录下创建AndroidManifest.xml文件,指定测试应用为Hilt官方提供的测试类:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kelvinquantic.danamon"> <!-- 与主应用包名保持一致 -->
    <application android:name="dagger.hilt.android.testing.HiltTestApplication" />
</manifest>

方式二:自定义测试应用(如需扩展测试逻辑)

在androidTest目录下创建测试应用接口:

@CustomTestApplication(MainApplication::class)
interface TestApplication

然后在测试的AndroidManifest.xml中指定生成的测试应用类:

<application android:name="com.kelvinquantic.danamon.TestApplication_HiltComponents" />

3. 调整测试类(可选)

如果LoginPageScreen依赖Activity上下文,将createComposeRule()替换为对应Activity的Compose规则:

@get:Rule(order = 1)
val composeTestRule = createAndroidComposeRule<LoginActivity>()

同时移除setContent中的手动主题和页面设置,直接依赖Activity的启动逻辑。

4. 重新运行测试

执行Build > Clean Project清理项目后,重新运行测试即可。

内容的提问来源于stack exchange,提问作者kelvin Prayitno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:32:22