我已遵循本指南并尝试使用 HILT 运行检测测试。但在我的测试模块中提供HiltTestApplication作为依赖项时失败了。下面是我的模块类-
@ExperimentalCoroutinesApi
@FlowPreview
@Module
@TestInstallIn(components = [SingletonComponent::class],
replaces = [ProductionModule::class])
object TestModule {
@JvmStatic
@Singleton
@Provides
fun provideRecipeDb(app: HiltTestApplication): RecipeDatabase {
return Room
.inMemoryDatabaseBuilder(app, RecipeDatabase::class.java)
.fallbackToDestructiveMigration()
.build()
}
}
得到以下错误-
C:\Users\bhuvn\AndroidStudioProjects\Dairy\app\build\generated\source\kapt\debugAndroidTest\com\bhuvnesh\diary\framework\dataSource\cache\RecipeDaoServiceTests_HiltComponents.java:128:错误:[Dagger/MissingBinding] 匕首。如果没有 @Inject 构造函数或 @Provides-annotated 方法,则无法提供 hilt.android.testing.HiltTestApplication。
公共抽象静态类 SingletonC 实现 RecipeDaoServiceTests_GeneratedInjector,^ dagger.hilt.android.testing.HiltTestApplication 在 com.bhuvnesh.diary.di.TestModule.provideRecipeDataFactory(application, �) com.bhuvnesh.diary.framework.dataSource.data.RecipesDataFactory 注入在 com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests.recipeDataFactory 注入 com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests 在 com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests_GeneratedInjector.injectTest( com.bhuvnesh.diary.framework.dataSource.cache.RecipeDaoServiceTests) 它也在以下位置请求:com.bhuvnesh.diary.di.TestModule.provideRecipeDb(app)
我还尝试通过在同一模块中手动提供依赖项使用-
@JvmStatic
@Singleton
@Provides
fun provideHiltTestApplication():HiltTestApplication{
return HiltTestApplication()
}
但它提供了一个导致 nullpointerexception 的 null 对象。