I have following android test class
@HiltAndroidTest
@UninstallModules(PreferencesModule::class, CacheModule::class)
class PlayerRepositoryTest {
private val fakeServer = FakeServer()
private lateinit var repository: PlayerRepository
private lateinit var api: GameApi
private lateinit var cache: Cache
@get: Rule
var hiltRule = HiltAndroidRule(this)
@get: Rule
var instantTaskExecutorRule = InstantTaskExecutorRule()
@Inject
lateinit var database: GameDatabase
@Inject
lateinit var retrofitBuilder: Retrofit.Builder
@Inject
lateinit var apiPlayerMapper: ApiPlayerDetailsMapper
@Inject
lateinit var apiPaginationMapper: ApiPaginationMapper
@BindValue
@JvmField
val preferences: Preferences = FakePreferences()
@Module
@InstallIn(SingletonComponent::class)
object TestCacheModule {
@Provides
fun provideRoomDatabase(): GameDatabase {
return Room.inMemoryDatabaseBuilder(
InstrumentationRegistry.getInstrumentation().context,
GameDatabase::class.java
)
.allowMainThreadQueries()
.build()
}
}
@Before
fun setup(){
fakeServer.start()
preferences.deleteTokenInfo()
preferences.putToken("validToken")
preferences.putTokenExpirationTime(Instant.now().plusSeconds(3600).epochSecond)
preferences.putTokenType("Bearer")
hiltRule.inject()
api = retrofitBuilder
.baseUrl(fakeServer.baseEndpoint)
.build()
.create(GameApi::class.java)
cache = RoomCache(database.sportDao(), database.playerDao())
repository = PlayerRepositoryIml(
api,
cache,
apiPlayerMapper,
apiPaginationMapper
)
}
@Test
fun requestMorePlayers_success() = runBlocking{
//Given
val expectedAnimalId =124L
fakeServer.setHappyPathDispatcher()
//When
val paginatedPlayers = repository.requestMorePlayers(1, 100)
//Then
val player = paginatedPlayers.players.first()
assertThat(player.id).isEqualTo(expectedAnimalId)
}
@After
fun tearDown(){
fakeServer.shutdown()
}
}
When I run this test file I get the following error:
D:\android projects\cricket\app\build\generated\hilt\component_sources\debugAndroidTest\common\data\PlayerRepositoryTest_TestComponentDataSupplier.java:8: error: cannot find symbol
import dagger.hilt.android.internal.testing.root.DaggerPlayerRepositoryTest_HiltComponents_SingletonC;
symbol: class DaggerPlayerRepositoryTest_HiltComponents_SingletonC
location: package dagger.hilt.android.internal.testing.root
D:\android projects\generated\hilt\component_sources\debugAndroidTest\dagger\hilt\android\internal\testing\root\PlayerRepositoryTest_HiltComponents.java:137: error: [Dagger/MissingBinding] sourabh.pal.cricket.common.data.cache.Cache cannot be provided without an @Provides-annotated method. public abstract static class SingletonC implements FragmentGetContextFix.FragmentGetContextFixEntryPoint,