Как проверить функцию приостановки, чтобы соответствовать покрытию ветвей, используя MockkAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как проверить функцию приостановки, чтобы соответствовать покрытию ветвей, используя Mockk

Сообщение Anonymous »

Я написал код Kotlin и хочу написать для него модульные тесты. Но я обнаружил, что код тестового модуля, который я написал, по -прежнему не может охватить 100% покрытие филиала. Что мне сделать?

Код: Выделить всё

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

@Before
fun setUp() {
scope = TestScope(dispatcher)
myRepository = MyRepository(dispatcher, scope)
}

@Test
fun testMyRepository1() = scope.runTest {

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)
, покрытие будет 0%, и код не будет выполнен. src = "https://i.sstatic.net/3k494idl.png"/>
Изображение


Подробнее здесь: https://stackoverflow.com/questions/792 ... sing-mockk
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Покрытие ветвей метода приостановки не может достигать 100 %.
    Anonymous » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Покрытие ветвей метода приостановки не может достигать 100 %.
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Покрытие ветвей метода приостановки не может достигать 100 %.
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Техника приостановки потока без использования API приостановки в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Техника приостановки потока без использования API приостановки в Java
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»