🧪 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. 🚀