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.
$ 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.