🧪 3.4 Fugindo de Métodos Estáticos e o Valor das Interfaces
O design orientado a testes (Test-Driven Design) frequentemente entra em conflito com o uso excessivo de métodos estáticos. Embora ferramentas modernas como o Mockito 5 consigam realizar o mockStatic, esta prática deve ser vista como a exceção, não a regra.
🏗️ O Problema da Rigidez Estática
Métodos estáticos são, por natureza, difíceis de substituir. Eles criam um acoplamento global que impede o isolamento necessário para testes de unidade de alta fidelidade.
📄 Por que preferir Instâncias e Interfaces?
- Polimorfismo: Interfaces permitem trocar a implementação real por um Mock sem alterar o código de quem a consome.
- Linguagem de Domínio: Injetar uma dependência torna explícito o que aquele componente precisa para funcionar.
- Ferramental Nativo: frameworks de Mock são otimizados para interceptar instâncias, não classes globais.
🛡️ Mockito 5 e Métodos Estáticos
Evolução Técnica ⚙️
No Mockito 5, é possível usar o
try-with-resourcescommockStatic(SuaClasse.class). Entretanto, se você precisa mockar um método estático, pergunte-se: “Esta lógica não deveria ser uma dependência injetada?“.
📄 Exemplo de Refatoração de Elite
// ANTES (Estático e difícil de testar)
public void processa() {
Calculador.executa(dados);
}
// DEPOIS (Injetado e testável)
public void processa(Calculador calculador) {
calculador.executa(dados);
}Projete para contratos ⚡
Ao programar voltado para interfaces, seu sistema torna-se resiliente a mudanças e extremamente fácil de ser coberto por testes automatizados. 🏁