Kotlin Multiplatform Academy · Aula

Teste funções suspend e fluxos

Use runTest e Turbine para verificar o comportamento assíncrono.

Aula 2 de 413 etapas

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.

Grátis para começar

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

  1. kotlin.test em commonTest
  2. Teste funções suspend e fluxos
  3. Simule o cliente e os repositórios do Ktor
  4. Execute testes nos destinos Android e iOS
← Voltar para Kotlin Multiplatform Academy