Skip to content
Latchkey

O Que É um Test Runner?

Um test runner é a ferramenta que encontra seus testes, os executa e reporta quais passaram e quais falharam.

Escrever testes é só metade do trabalho; algo tem que executá-los. Um test runner é esse algo. Ele descobre os arquivos de teste, prepara e finaliza cada teste, os executa (frequentemente em paralelo), coleta as asserções e produz um relatório. Pytest, Jest, Vitest e Go test são todos test runners.

O que um test runner faz

  • Descobre arquivos de teste por nome ou padrão.
  • Roda setup e teardown ao redor de cada teste.
  • Executa os testes, frequentemente em paralelo.
  • Coleta resultados e imprime um relatório de passa/falha.
  • Emite saída legível por máquina para o CI consumir.

Runner versus framework versus biblioteca de asserção

Esses se sobrepõem e os termos se confundem. Um test framework fornece a estrutura para escrever testes (describe, it), uma biblioteca de asserção fornece as verificações (expect), e o runner os executa. Muitas ferramentas juntam os três; outras deixam você misturar e combinar.

Um exemplo rápido

Invocar o runner descobre e executa a suíte, depois imprime resultados e um código de saída sobre o qual o CI pode agir.

A test runner in action
$ npx vitest run
  PASS  src/cart.test.ts (12 tests)
  FAIL  src/checkout.test.ts (1 failed)

Códigos de saída e relatórios

Um runner sinaliza sucesso ou falha com um código de saída, zero para passar, não-zero para falhar, que é como o CI sabe se deve continuar. A maioria dos runners também pode emitir um relatório estruturado, como JUnit XML, que o CI usa para exibir resultados por teste.

Test runners no CI

No CI o runner é invocado da mesma forma que localmente, mas seu código de saída serve de portão para o pipeline e seu relatório alimenta o dashboard. Runners que suportam sharding e workers paralelos permitem espalhar uma suíte grande por runners rápidos. Essa combinação é o que mantém o feedback do CI rápido.

Principais conclusões

  • Um test runner descobre, executa e reporta seus testes.
  • Seu código de saída serve de portão para o pipeline de CI; seu relatório alimenta dashboards.
  • Suporte a paralelismo e sharding permite que ele escale por runners rápidos.

Guias relacionados