Тестирование сопрограмм Kotlin на Android с альтернативой TestCoroutineDispatcher (устарело) ⇐ Android
Тестирование сопрограмм Kotlin на Android с альтернативой TestCoroutineDispatcher (устарело)
Я изучаю тестирование сопрограмм в своем приложении для Android и следую этой лаборатории кода Расширенный Android в Kotlin 05.3: тестирование интеграции сопрограмм и Jetpack
эта кодовая лаборатория содержит следующий фрагмент кода
@ExperimentalCoroutinesApi val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher() @ExperimentalCoroutinesApi @До забавная настройкаDispatcher() { Dispatchers.setMain(testDispatcher) } @ExperimentalCoroutinesApi @После весело слезаDownDispatcher() { Диспетчеры.resetMain() testDispatcher.cleanupTestCoroutines() } однако TestCoroutineDispatcher помечен как устаревший в этом комментарии: -
/** * [CoroutineDispatcher], который выполняет как немедленное, так и отложенное выполнение сопрограмм в тестах. * и использует [TestCoroutineScheduler] для управления своими виртуальными часами. * * По умолчанию [TestCoroutineDispatcher] действует немедленно. Это означает, что любые задачи, запланированные для запуска без задержки, * немедленно выполняется. Если они были запланированы с задержкой, время виртуальных часов должно быть переведено вперед через один из * методы в [планировщике] диспетчера. * * При переключении на отложенное выполнение с помощью [pauseDispatcher] любые сопрограммы, запущенные с помощью [launch] или [async], будут * не выполняться до тех пор, пока вызов [DelayController.runCurrent] или виртуальное время не будет продвинуто через один из * методы в [DelayController]. * * @см. DelayController */ @Deprecated("Порядок выполнения `TestCoroutineDispatcher` может сбивать с толку, а механизм " + "пауза обычно понимается неправильно. Вместо этого используйте `StandardTestDispatcher` или `UnconfinedTestDispatcher`.", уровень = Уровень Устаревания. ПРЕДУПРЕЖДЕНИЕ) // Начиная с версии 1.6.0, ОШИБКА в версии 1.7.0 и удалена как экспериментальная в версии 1.8.0 общедоступный класс TestCoroutineDispatcher (публичный переопределенный планировщик val: TestCoroutineScheduler = TestCoroutineScheduler()): TestDispatcher(), Задержка, SchedulerAsDelayController {...} Непонятно, как мне следует использовать предложенные альтернативы TestCoroutineDispatcher(): StandardTestDispatcher и UnconfinedTestDispatcher являются прямой заменой TestCoroutineDispatcher()?
чего мне не хватает?
Я изучаю тестирование сопрограмм в своем приложении для Android и следую этой лаборатории кода Расширенный Android в Kotlin 05.3: тестирование интеграции сопрограмм и Jetpack
эта кодовая лаборатория содержит следующий фрагмент кода
@ExperimentalCoroutinesApi val testDispatcher: TestCoroutineDispatcher = TestCoroutineDispatcher() @ExperimentalCoroutinesApi @До забавная настройкаDispatcher() { Dispatchers.setMain(testDispatcher) } @ExperimentalCoroutinesApi @После весело слезаDownDispatcher() { Диспетчеры.resetMain() testDispatcher.cleanupTestCoroutines() } однако TestCoroutineDispatcher помечен как устаревший в этом комментарии: -
/** * [CoroutineDispatcher], который выполняет как немедленное, так и отложенное выполнение сопрограмм в тестах. * и использует [TestCoroutineScheduler] для управления своими виртуальными часами. * * По умолчанию [TestCoroutineDispatcher] действует немедленно. Это означает, что любые задачи, запланированные для запуска без задержки, * немедленно выполняется. Если они были запланированы с задержкой, время виртуальных часов должно быть переведено вперед через один из * методы в [планировщике] диспетчера. * * При переключении на отложенное выполнение с помощью [pauseDispatcher] любые сопрограммы, запущенные с помощью [launch] или [async], будут * не выполняться до тех пор, пока вызов [DelayController.runCurrent] или виртуальное время не будет продвинуто через один из * методы в [DelayController]. * * @см. DelayController */ @Deprecated("Порядок выполнения `TestCoroutineDispatcher` может сбивать с толку, а механизм " + "пауза обычно понимается неправильно. Вместо этого используйте `StandardTestDispatcher` или `UnconfinedTestDispatcher`.", уровень = Уровень Устаревания. ПРЕДУПРЕЖДЕНИЕ) // Начиная с версии 1.6.0, ОШИБКА в версии 1.7.0 и удалена как экспериментальная в версии 1.8.0 общедоступный класс TestCoroutineDispatcher (публичный переопределенный планировщик val: TestCoroutineScheduler = TestCoroutineScheduler()): TestDispatcher(), Задержка, SchedulerAsDelayController {...} Непонятно, как мне следует использовать предложенные альтернативы TestCoroutineDispatcher(): StandardTestDispatcher и UnconfinedTestDispatcher являются прямой заменой TestCoroutineDispatcher()?
чего мне не хватает?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение