runBlocking: Блокирующая функция, запускающая новый корутин и ожидающая его завершения. Используется в основном в тестах или в функциях main, где необходима блокировка. Не подходит для продакшн-кода в UI-потоке.runBlockingTest (из kotlinx-coroutines-test до версии 1.6): Блокирующая функция, оптимизированная для тестирования. По умолчанию использует TestCoroutineDispatcher, позволяя управлять временем и немедленно выполнять отложенные задачи.runTest (из kotlinx-coroutines-test с версии 1.6): Неблокирующая функция, созданная для замены runBlockingTest. Использует TestDispatcher. Позволяет более гибко тестировать сценарии с задержками и параллельными задачами, автоматически перематывая время.Основные отличия:
| Feature | runBlocking | runBlockingTest (deprecated) | runTest |
|---|---|---|---|
| Блокирование потока | Да | Да | Нет (в рамках теста) |
| Управление временем | Нет (использует системное время) | Да (через TestCoroutineDispatcher) | Да (через TestDispatcher) |
| Использование в тестах | Возможно, но не оптимизировано | Основное назначение | Основное назначение |
Версия kotlinx-coroutines-test | Не часть тестовой библиотеки | До 1.6 | 1.6+ |
| Замена | Нет | runTest | Нет |