Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Android: testing, flow, coroutines

Какие особенности стоит учитывать при написании юнит-тестов для StateFlow или SharedFlow?

Вопрос проверяет знание подводных камней тестирования потоков в корутинах.

Короткий ответ

Используйте runTest для контроля времени, проверяйте начальные значения и обновления. Для SharedFlow учитывайте буферизацию и отсутствие начального значения.

Длинный ответ

1. Основные правила:

  • Запускайте тесты в runTest для управления виртуальным временем.

  • Проверяйте начальное состояние StateFlow.

  • Для SharedFlow явно эмитируйте значения перед подпиской или используйте replay.

2. Пример теста для StateFlow:

@Test
fun testStateFlow() = runTest {
    val flow = MutableStateFlow(0)  
    val values = mutableListOf<Int>()  

    val job = launch { flow.collect { values.add(it) } }  

    flow.value = 1  
    assertEquals(listOf(0, 1), values)  

    job.cancel()  
}  

3. Пример теста для SharedFlow:

@Test
fun testSharedFlow() = runTest {
    val flow = MutableSharedFlow<Int>()  
    val values = mutableListOf<Int>()  

    val job = launch { flow.collect { values.add(it) } }  

    flow.emit(1)  
    assertEquals(listOf(1), values)  

    job.cancel()  
}  

Вывод:
Тестируйте потоки в управляемой среде и учитывайте их специфику (буферизацию, горячесть).

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    1

  • Сложность:

    7

Навыки

  • Android

    Android

Ключевые слова

#testing

#flow

#coroutines

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.