🧪 Testes de Domínio: O Fundamento da Qualidade

A classe Leilao é o coração do nosso sistema. O método propoe() contém as regras de negócio mais valiosas e, por isso, deve ser protegido por uma suíte de testes resiliente.

🔬 Cenários de Teste Iniciais

Vamos validar se os lances são armazenados corretamente sob condições normais. Usaremos o JUnit 5 e o AssertJ para garantir expressividade máxima.

📄 src/test/java/…/servico/LeilaoTest.java

import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import com.empresa.dominio.*;
 
class LeilaoTest {
 
    @Test
    void deveReceberUmLance() {
        var leilao = new Leilao("Macbook Pro 16");
        assertThat(leilao.getLances()).isEmpty();
 
        leilao.propoe(new Lance(new Usuario("Steve Jobs"), 2000.0));
 
        assertThat(leilao.getLances()).hasSize(1);
        assertThat(leilao.getLances().get(0).getValor()).isEqualTo(2000.0);
    }
 
    @Test
    void deveReceberVariosLances() {
        var leilao = new Leilao("Macbook Pro 16");
 
        leilao.propoe(new Lance(new Usuario("Steve Jobs"), 2000.0));
        leilao.propoe(new Lance(new Usuario("Steve Wozniak"), 3000.0));
 
        assertThat(leilao.getLances()).hasSize(2);
        assertThat(leilao.getLances().get(0).getValor()).isEqualTo(2000.0);
        assertThat(leilao.getLances().get(1).getValor()).isEqualTo(3000.0);
    }
}

🛡️ Regras de Negócio Emergentes

Agora, o negócio exige restrições mais robustas para evitar fraudes ou spam de lances:

  • Padrão de Sequência: Um usuário não pode dar dois lances seguidos.
  • Padrão de Frequência: Um usuário não pode dar mais de cinco lances no mesmo leilão.

Dívida Técnica Imunizada 🛡️

Implementar estas regras sem o apoio dos testes tornaria o código “blindado contra mudanças”. Com o JUnit 5, criamos uma rede de segurança que nos permite evoluir a lógica com total tranquilidade. 🚀


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