ANÚNCIO

~/questoes/programacao

Em testes unitários Spring Boot, qual anotação é usada para testar apenas a camada JPA?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

Testando a Camada JPA com @DataJpaTest no Spring Boot

Conceito central

Em Spring Boot, existem diferentes anotações para testar partes específicas da aplicação. A @DataJpaTest é especializada em testar isoladamente a camada de persistência, carregando apenas componentes JPA como repositórios e entidades, sem precisar carregar todo o contexto da aplicação.

Por que essa resposta faz sentido

@DataJpaTest é a anotação ideal para testar repositórios e entidades de forma isolada e rápida. Ela carrega apenas o necessário para JPA funcionar, deixando de fora controllers, serviços e configurações globais, tornando os testes mais ágeis.

Armadilhas comuns

  • Confundir @DataJpaTest com @SpringBootTest; lembrar que @DataJpaTest é mais leve e específica para JPA.
  • Achar que @DataJpaTest testa apenas um repositório; na verdade, ela testa toda a camada JPA (entidades, relacionamentos, queries).
  • Tentar usar @UnitTest ou @RepositoryTest, que não existem como anotações oficiais do Spring Boot.

Entenda as alternativas

A

@SpringBootTest carrega o contexto completo da aplicação, incluindo todos os beans. É útil para testes de integração, mas muito pesada quando você quer testar apenas repositórios.

B

@UnitTest não é uma anotação oficial do Spring. Essa anotação não existe na framework; você pode estar confundindo com testes unitários puros (sem Spring) feitos com JUnit.

C

@DataJpaTest carrega apenas os componentes necessários para testar JPA: entidades, repositórios e banco de dados em memória. Isso torna os testes rápidos e focados na camada de persistência.

D

@RepositoryTest não é uma anotação padrão do Spring Boot. O nome parece lógico, mas a framework usa @DataJpaTest para esse propósito específico.

Dica prática: Quando escrever testes para sua classe Repository, use @DataJpaTest. Ela já configura um banco H2 em memória automaticamente. Seus testes rodarão muito mais rápido do que com @SpringBootTest.

Revise pensando: Se você quer testar apenas suas queries JPA e validações de entidade, qual anotação você usaria?