🚀 7.2 Testes Unitários: Precisão e Velocidade
Os Testes Unitários são a fundação do nosso Escudo de Engenharia. Eles validam a menor unidade possível de código (geralmente uma classe ou método) em isolamento total, garantindo que a lógica fundamental do Green Dog esteja correta.
O Kit de Elite
No Spring Boot 3.5, utilizamos as melhores ferramentas do ecossistema:
- JUnit 5 (Jupiter): O motor de execução moderno.
- AssertJ: Para asserções fluidas e legíveis.
- Mockito: Para isolar a unidade, substituindo dependências reais por mocks (objetos simulados).
Exemplo: Testando Regras de Negócio
Vamos testar uma lógica simples de cálculo ou validação em nossa entidade Pedido.
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
class PedidoTest {
@Test
@DisplayName("Deve calcular o valor total corretamente com um item")
void deveCalcularValorTotal() {
// Arrange (Preparação)
Item dog = Item.builder().nome("Tradicional").preco(25.0).build();
Pedido pedido = Pedido.builder()
.itens(Arrays.asList(dog))
.build();
// Act (Ação)
Double total = pedido.getItens().stream()
.mapToDouble(Item::getPreco).sum();
// Assert (Verificação com AssertJ)
assertThat(total).isEqualTo(25.0);
}
}Benefícios do Isolamento
graph TD Test[Teste Unitário] subgraph isolamento [Isolamento] Class[Classe Sob Teste] Mock1[Mock Repositório] Mock2[Mock Serviço] end Test --> Class
Class -.-> Mock1
Class -.-> Mock2
> [!TIP]
>
> **Velocidade é Chave:** Um teste unitário deve rodar em milissegundos. Se seu teste demora segundos ou precisa de um banco de dados, ele não é um teste unitário, mas um teste de integração.
Com a lógica atômica validada, vamos subir um degrau e testar como nossos componentes conversam entre si.
---
[[Informática para Internet/Sistemas Web II/capitulo_049|⬅️ Capítulo Anterior]] | [[Informática para Internet/Sistemas Web II/capitulo_051|Próximo Capítulo ➡️]]