В тесте Espresso, как я могу ждать запуска Coroutines (), приведенном с помощью Scope от MembleCoroutinescope ()?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 В тесте Espresso, как я могу ждать запуска Coroutines (), приведенном с помощью Scope от MembleCoroutinescope ()?

Сообщение Anonymous »

Мое приложение Android использует JetPack Compose. Внутри одной из моих функций @composable я получаю прицел:

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

@Composable
fun MyComposable() {
val scope = rememberCoroutineScope()
// ...
Затем я использую его в одной из моих кнопок 'onclick для запуска функции приостановки:

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

    Button(onClick = {
scope.launch {
doThings()
}
}) {
// ...
}
}

suspend fun doThings() {
// ...
}
< /code>
Я хотел бы провести тест на эспрессо результатов клика. Однако сразу после < /p>
onNode(/* ... */).performClick()
< /code>
doThings()
еще не сделано. Я хотел бы подождать, пока не закончится dothings () без использования thread.sleep () , что -то вроде:

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

waitUntil { theThingsAreDone() }
< /code>
Is there any way I can do this without putting the test code in my production code?
If I could replace scope
в моем тесте, тогда я мог бы использовать тот, который увеличил и уменьшил счетчики chountingidlingresource , что заставило эспрессо ожидание его автоматически. Передача Scope в качестве параметра MyComposable может дать мне этот элемент управления, но затем я бы потерял поведение MomplyCoroutinescope () . Могу ли я изменить Scope в своем тесте, при этом он все еще следит за поведением MomplyCoroutinescope () ?

Подробнее здесь: https://stackoverflow.com/questions/778 ... pe-from-re
Ответить

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

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

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

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

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