O Que É um Test Harness?
Um test harness é o andaime de apoio, a configuração, os drivers, os stubs e a configuração, que permite que testes rodem contra o código sob teste.
Testes raramente rodam no vácuo. Um test harness é tudo que cerca o código sob teste para tornar o teste possível: o framework que executa os testes, as fixtures e test doubles que fornecem entradas, a configuração que amarra tudo e o reporting que captura resultados. É o aparato que segura o sujeito no lugar para que você possa examiná-lo.
O que um harness inclui
- Um framework ou runner de execução de testes.
- Setup e teardown para construir e limpar estado.
- Test doubles, stubs e fixtures fornecendo entradas.
- Configuração e reporting para capturar resultados.
Harness versus runner
Um test runner é uma parte de um harness, a peça que executa testes e reporta resultados. O harness é o conjunto mais amplo: o runner mais as fixtures, drivers, doubles e configuração que colocam o código sob teste em uma posição onde ele pode ser exercitado. O runner roda; o harness cerca.
Um exemplo rápido
O harness é o andaime em torno das verificações reais: ele levanta um servidor de teste, aponta o cliente para ele e o derruba depois.
beforeAll(() => server.start());
afterAll(() => server.stop());
// the actual tests run against this harnessPor que um bom harness importa
Um harness bem construído torna os testes fáceis de escrever, rápidos de rodar e confiáveis. Um ruim, com estado que vaza, setup lento ou configuração emaranhada, torna cada teste mais difícil e mais instável. Investir no harness compensa por toda a suíte, já que todo teste depende dele.
O harness no CI
No CI o harness deve subir de forma limpa em um runner novo toda vez: iniciar serviços, construir fixtures, configurar o ambiente e então derrubar tudo. Um runner limpo e isolado por job mantém esse setup reproduzível, e runners rápidos impedem que o setup do harness domine a execução. Essa isolação e velocidade é o que os runners Latchkey fornecem.
Principais conclusões
- Um test harness é o andaime que permite que testes rodem.
- Ele inclui o runner mais fixtures, doubles e configuração.
- Um harness limpo em um runner isolado mantém os testes de CI reproduzíveis.