@DataJpaTest
애노테이션이란?
- JPA 컴포넌트에 대한 테스트에만 초점을 맞춘 애노테이션이다.
- 리포지토리 계층에 대한 격리된 테스트 환경을 설정하는데 유용하다.
- full auto-configuration 이 비활성화되고 대신 JPA 테스트와 관련된 configuration 만 활성화된다.
- full application context 를 로드하기 싫을 때 유용하다.
@DataJpaTest
를 사용하면 각 테스트가 트랜잭션이 되고 테스트가 끝날 때 롤백된다.- 임베디드 인메모리 데이터베이스를 사용한다.
@AutoConfigurationTestDatabase
애노테이션을 이용해 이 설정을 재정의(override) 할 수 있다.
- SQL 쿼리는 기본적으로
spring.jpa.show-sql
속성을true
로 설정하여 로깅된다.showSql
속성을 사용하여 비활성화도 가능하다.
- 전체 애플리케이션 구성을 로드하되 임베디드 DB 를 사용하려면 이 애노테이션 대신
@SpringBootTest
와@AutoConfigureTestDatabase
을 결합하는 것을 고려해보는 것이 좋다.
번역 전 주석 원문
Annotation for a JPA test that focuses only on JPA components.
Using this annotation will disable full auto-configuration and instead apply only configuration relevant to JPA tests.By default, tests annotated with
@DataJpaTest
are transactional and roll back at the end of each test. They also use an embedded in-memory database (replacing any > explicit or usually auto-configured DataSource). The @AutoConfigureTestDatabase annotation can be used to override these settings.SQL queries are logged by default by setting the spring.jpa.show-sql property to true. This can be disabled using the showSql attribute.
If you are looking to load your full application configuration, but use an embedded database, you should consider
@SpringBootTest
combined with@AutoConfigureTestDatabase
rather than this annotation.When using JUnit 4, this annotation should be used in combination with @RunWith(SpringRunner.class).
의존성
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
사용법
@DataJpaTest
를 사용하므로 스프링은 테스트 목적의 인메모리 DB 를 생성할 것이다.- 이 인메모리 DB는 실제 application context 에서와 마찬가지로 데이터베이스와 상호작용할 수 있다.
@Rollback
은 롤백을 비활성화 시키고 싶을 때 사용할 수 있다.- 비활성화 시키지 않는다면, 변경사항이 유지되지 않아 모든 테스트 메서드가 깨끗한 상태에서 시작된다. (보통 이상적)
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.junit.jupiter.api.Test;
import org.springframework.test.annotation.Rollback;
@DataJpaTest
public class YourRepositoryTest {
// Your @Autowired and test methods go here
@Test
@Rollback(false)
public void testSaveToDatabase() {
// Test saving an entity to the database and verify the result
}
}
'프레임워크 > 스프링 프레임워크' 카테고리의 다른 글
@MockBean 애노테이션이란? (0) | 2023.08.03 |
---|---|
@TestConfiguration 애노테이션이란? (0) | 2023.08.03 |
Spring Boot Configuration Processor 란? (0) | 2023.08.02 |
@EnableGlobalMethodSecurity 애노테이션이란? (0) | 2023.07.31 |
@EnableWebSecurity 애노테이션이란? (0) | 2023.07.31 |