Ответ
Unit-тестами покрываю классы без зависимостей от Android-фреймворка (Context, Activity и т.д.). В основном это:
- Domain-слой: UseCases, бизнес-логика
- Data-слой: Repository, Mappers, DataSources (кроме работы с БД/сетью)
- Utility-классы: Validators, Converters, Extensions
Пример теста для UseCase:
class GetUserUseCaseTest {
private val repo = mockk<UserRepository>()
private val useCase = GetUserUseCase(repo)
@Test
fun `invoke should return user from repo`() = runTest {
val expectedUser = User("test")
coEvery { repo.getUser() } returns expectedUser
val result = useCase()
assertEquals(expectedUser, result)
coVerify { repo.getUser() }
}
}
Для ViewModel и других классов с Android-зависимостями использую Instrumented-тесты.