Teste funções suspend e fluxos
Use runTest e Turbine para verificar o comportamento assíncrono.
Teste funções suspend e fluxos é uma aula grátis de Kotlin Multiplatform Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Multiplatform Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Multiplatform Academy inclui 4 aulas no total.
O Código Assíncrono Precisa de Testes Especiais
Funções suspensas e Flows não terminam instantaneamente, então você precisa de ferramentas que aguardem o trabalho assíncrono antes de fazer as asserções. ⏳
Conheça runTest
Envolva as asserções assíncronas em runTest da biblioteca coroutines-test; ela fornece um escopo e ignora automaticamente os atrasos virtuais.
@Test
fun loadsUser() = runTest {
val u = repo.load(1)
assertEquals("Sam", u.name)
}Adicione o Auxiliar de Teste
Inclua kotlinx-coroutines-test em commonTest para que runTest e seus auxiliares estejam disponíveis em todos os destinos.
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")Aguardando um Resultado de uma Função Suspensa
Dentro de runTest, basta chamar diretamente a função suspensa e verificar o que ela retorna.
val total = calc.fetchTotal()
assertEquals(42, total)O tempo passa de graça
runTest usa tempo virtual, portanto um atraso de vários segundos é resolvido imediatamente e seus testes continuam rápidos.
Testando um Flow manualmente
Você pode coletar um Flow finito em uma lista com toList e verificar os valores emitidos.
val values = numbers().toList()
assertEquals(listOf(1, 2, 3), values)Por que o Turbine ajuda
Para fluxos contínuos, a biblioteca Turbine permite aguardar itens um por vez, sem a configuração manual da coleta.
Adicione o Turbine
Adicione o Turbine a commonTest; ele é um pequeno auxiliar multiplataforma criado especificamente para testar Flows.
implementation("app.cash.turbine:turbine:1.1.0")Aguarde itens com test
O Turbine envolve um Flow em um bloco de teste, no qual awaitItem retorna cada emissão na ordem.
flow.test {
assertEquals(1, awaitItem())
awaitComplete()
}Finalize o fluxo corretamente
Finalize cada bloco do Turbine com awaitComplete ou cancele-o; caso contrário, o teste falhará por causa de eventos não consumidos.
Verifique atualizações do StateFlow
O Turbine é excelente para StateFlow: aguarde o valor inicial, acione uma ação e aguarde o próximo estado emitido.
Verificação rápida
Escolha o invólucro correto para o teste assíncrono.
Recapitulação
Use runTest para código suspenso e o bloco de teste do Turbine para aguardar emissões de Flow, tudo a partir de commonTest.
Aprenda Kotlin com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Teste funções suspend e fluxos” é grátis?
Sim — o texto completo de “Teste funções suspend e fluxos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Multiplatform Academy, atualize para CoddyKit PRO. O curso de Kotlin Multiplatform Academy inclui 4 aulas no total.
O que vou aprender em “Teste funções suspend e fluxos”?
Use runTest e Turbine para verificar o comportamento assíncrono. Você pratica Kotlin Multiplatform Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Multiplatform Academy?
Nenhuma experiência prévia é necessária. Kotlin Multiplatform Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Teste funções suspend e fluxos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Multiplatform Academy?
Sim. Cada aula de Kotlin Multiplatform Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- kotlin.test em commonTest
- Teste funções suspend e fluxos
- Simule o cliente e os repositórios do Ktor
- Execute testes nos destinos Android e iOS