Я написал код Kotlin и хочу написать для него модульные тесты. Но я обнаружил, что код тестового модуля, который я написал, по -прежнему не может охватить 100% покрытие филиала. Что мне сделать?
Я написал код Kotlin и хочу написать для него модульные тесты. Но я обнаружил, что код тестового модуля, который я написал, по -прежнему не может охватить 100% покрытие филиала. Что мне сделать?[code]class MyRepository @Inject constructor( @DefaultDispatcher private val dispatcher: CoroutineDispatcher, @ApplicationScope private val scope: CoroutineScope, val checkService:ICheckService = CheckService() ) { fun fetchData(value: Int): String { return runBlocking(dispatcher) { suspendCoroutine { continuation -> println(111) scope.launch(dispatcher) { println(222) delay(100) println(333) if(checkService.check(value)){ println(444) } continuation.resume("result") } } } } }
interface ICheckService { suspend fun check(value:Int): Boolean }
class CheckService:ICheckService{ override suspend fun check(value: Int): Boolean { // mock delay delay(300)
return value > 0 }
} < /code> ut Code: < /p> class MyRepositoryTest4 { private lateinit var myRepository: MyRepository private val dispatcher = StandardTestDispatcher() private lateinit var scope: TestScope
withContext(Dispatchers.IO){ myRepository.fetchData(-1) } } @Test fun testMyRepository2() = scope.runTest {
withContext(Dispatchers.IO){ myRepository.fetchData(1) } } } < /code> Кроме того, если я изменю объект < /p> myRepository to myRepository=mockk (relaxed=true) [/code] , покрытие будет 0%, и код не будет выполнен. src = "https://i.sstatic.net/3k494idl.png"/> [img]https://i.sstatic.net/V6Fkwyth.png[/img]