@DataJpaTest
`@DataJpaTest`는 JPA 관련 테스트를 쉽게 수행할 수 있도록 도와주는 스프링부트의 테스트 어노테이션이다.
`@DataJpaTest` 어노테이션은 기본적으로 JPA 관련 설정만 활성화하고, 레포지토리 테스트에만 필요한 컴포넌트들을 로드한다.
(즉, JpaTest에 필요한 최소한의 빈을 불러오므로, @Configuration 빈이 포함되어 있지 않음)
`@DataJpaTest`를 활용한 JPA 관련 테스트를 진행하며 필요한 간단한 설정에 대해 기록해두고자 이번 포스팅을 진행한다.
`@DataJpaTest` 사용 코드
@DataJpaTest
@Import({JpaAuditingConfig.class, QueryDSLConfig.class})
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
class AdminRepositoryTest {
}
코드에서 `@Import`를 사용해 특정 `Config` 클래스들을 호출한다.
이때, `JpaAuditingConfig`는 `Auditing` 역할을 해주는 Config 클래스이고,
`QueryDSLConfig`는 `QueryDSL`과 관련된 `JPAQueryFactory`를 위한 Config 클래스이다.
앞서, 언급했던 것처럼 기본적으로 `@DataJpaTest`는 정말 최소한의 빈을 불러오므로
관련된 추가 `Configuration`에 대해선 설정이 되지 않는다.
따라서, 위의 코드처럼 `@Import`를 사용해 관련 문제 해결이 가능하다.
`@AutoConfigureTestDatabase` 어노테이션은 테스트에서 사용할 `DB`를 지정하는 데 도움을 준다.
필자처럼 `@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)`를 사용하면,
인메모리 DB인 `H2`를 사용하겠다는 것을 의미한다.
만약, 테스트가 아니라 애플리케이션에서 사용하는 DB를 그대로 사용하고 싶다면,
`@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.NONE)`
로 지정하면 된다.
'Spring > Test' 카테고리의 다른 글
Spring Boot 3.4.0 버전부터 @MockBean Deprecated이 되었다. (0) | 2024.12.04 |
---|---|
[테스트 코드] 스프링에서의 Redis 테스트 환경 구축 (0) | 2024.11.29 |
[테스트 코드] 테스트 코드에서 static method를 사용하는 법 (0) | 2024.11.24 |
[테스트 코드] 단위 테스트 @InjectMock 사용방법 (0) | 2024.11.24 |
[테스트 코드] 테스트 코드 이해하기 (0) | 2024.11.22 |