🧪 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?

  1. Polimorfismo: Interfaces permitem trocar a implementação real por um Mock sem alterar o código de quem a consome.
  2. Linguagem de Domínio: Injetar uma dependência torna explícito o que aquele componente precisa para funcionar.
  3. 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-resources com mockStatic(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. 🏁


⬅️ Capítulo Anterior | Próximo Capítulo ➡️