🧪 1.8 Classes de Equivalência

Testar todas as combinações infinitas é impossível. O segredo da Engenharia de Elite é escrever apenas um teste para cada cenário semanticamente diferente.

📂 O que são Classes de Equivalência?

Se o código se comporta da mesma forma para o valor 1000 e para o valor 2000 em uma ordem crescente, eles pertencem à mesma classe. Precisamos de apenas um representante desta classe.

Para o nosso Avaliador, identificamos estes cenários distintos:

  • Lances em ordem crescente.
  • Lances em ordem decrescente.
  • Lances em ordem aleatória.
  • Leilão com apenas um lance.

📄 Exemplo: O Caso do Lance Único

@Test
void deveEntenderLeilaoComApenasUmLance() {
    var joao = new Usuario("João");
    var leilao = new Leilao("Playstation 5");
 
    leilao.propoe(new Lance(joao, 1000.0));
 
    var leiloeiro = new Avaliador();
    leiloeiro.avalia(leilao);
 
    assertThat(leiloeiro.getMaiorLance()).isEqualTo(1000.0);
    assertThat(leiloeiro.getMenorLance()).isEqualTo(1000.0);
}

Cobertura Qualitativa 🛡️

Qualidade não é ter 100% de cobertura de linhas com testes repetitivos, mas sim garantir que todos os fluxos de decisão importantes foram validados. 🚀


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