🧼 1.18 O Culto à Excelência: Refatoração de Testes
Manter uma bateria de testes resiliente exige o mesmo compromisso com a qualidade aplicado ao código de produção. Teste é código de primeira classe.
🏗️ Ativos Técnicos e Dívida nos Testes
Não aceite testes “feios” só porque eles não vão para o cliente final. Testes sujos tornam o build lento e difícil de compreender, gerando Dívida Técnica.
| Critério de Excelência | O que buscar? | Benefício Técnico |
|---|---|---|
| Legibilidade | Nomes de métodos que descrevem cenários (ex: deveFalharSeCPFForInvalido). | Documentação técnica instantânea. |
| Singularidade | Um teste deve falhar por exatamente um motivo. | Diagnóstico rápido sem DEBUG. |
| Independência | Testes podem rodar em qualquer ordem ou em paralelo. | Agilidade no pipeline de CI/CD. |
🔄 Ciclo de Melhoria Contínua (Test Refactoring)
flowchart LR A["Implementar Teste"] --> B["Fazer Passar (Green Bar)"] B --> C["Refatorar Produção"] C --> D["Refatorar Código de Teste"] D -- "Checklist de Limpeza" --> A style B fill:#f1f8e9,stroke:#558b2f style D fill:#e3f2fd,stroke:#1e88e5,stroke-dasharray: 5 5
A Regra dos "Escoteiros" 🛡️
Deixe o código de teste sempre melhor do que o encontrou. Se notar um padrão de criação de dados se repetindo, extraia para um Builder. Se houver lógica de comparação complexa, extraia para uma Assertiva Customizada. 🚀
O Teste como Especificação Técnica 🏁
No nível de Elite, os testes servem como o Manual Técnico do sistema. Novos desenvolvedores devem ser capazes de entender todas as regras de negócio apenas lendo a suite de testes de unidade. ⚡