将 Hilt 用于 UI 测试、TestInstalln 时出现绑定多次问题
Bound Multiple Times issue when using Hilt for UI Test, TestInstalln
我创建了一个伪造的 urlprovider 绑定并使用 TestInstallIN 进行了注释
@Module
@TestInstallIn(
components = [SingletonComponent::class],
replaces = [UrlModuleBindings::class]
)
abstract class FakeAppBindings {
@Binds
abstract fun bindsUrlProvider(urlProvider: FakeUrlProvider): UrlProvider
}
我的 Prod UrlProvider 看起来像
@Module
@InstallIn(SingletonComponent::class)
abstract class UrlModuleBindings {
@Binds
abstract fun bindsUrlProvider(urlProvider: DefaultUrlProvider): UrlProvider
}
当我 运行 UI 测试得到错误 UrlProvider 绑定多次:
根据文档,一切似乎都是正确的,我能知道这是什么问题吗?
感谢 Brad,问题出在 AppModule 上,我使用的是 Includes,而 hilt 不需要 Includes,因为它已经具有用于此目的的 InstallIn 注释。一旦我删除它,UI 测试开始工作。
更多详情。
我创建了一个伪造的 urlprovider 绑定并使用 TestInstallIN 进行了注释
@Module
@TestInstallIn(
components = [SingletonComponent::class],
replaces = [UrlModuleBindings::class]
)
abstract class FakeAppBindings {
@Binds
abstract fun bindsUrlProvider(urlProvider: FakeUrlProvider): UrlProvider
}
我的 Prod UrlProvider 看起来像
@Module
@InstallIn(SingletonComponent::class)
abstract class UrlModuleBindings {
@Binds
abstract fun bindsUrlProvider(urlProvider: DefaultUrlProvider): UrlProvider
}
当我 运行 UI 测试得到错误 UrlProvider 绑定多次:
根据文档,一切似乎都是正确的,我能知道这是什么问题吗?
感谢 Brad,问题出在 AppModule 上,我使用的是 Includes,而 hilt 不需要 Includes,因为它已经具有用于此目的的 InstallIn 注释。一旦我删除它,UI 测试开始工作。
更多详情。