Ответ
JUnit и MockK для unit-тестов с runTest (заменяет runBlocking в JUnit 5). Для тестирования таймингов — TestCoroutineScheduler из kotlinx-coroutines-test.
Пример:
@Test
fun testCoroutine() = runTest {
val repo = mockk<Repo>()
coEvery { repo.fetchData() } returns "test"
val result = repo.fetchData()
assertEquals("test", result)
coVerify { repo.fetchData() }
}
Нюансы:
runTestавтоматически пропускает задержки (delay)- Для
FlowиспользуйтеturbineилиtoList() - Избегайте
Dispatchers.IOв тестах — заменяйте наStandardTestDispatcher