1. 사용한 기술 개념
Spring Boot Test
@DataJpaTest
: JPA 관련 컴포넌트(ex. 리포지토리)를 테스트하기 위해 사용. 이때 내장된 데이터베이스를 사용.
@AutoConfigureTestDatabase
: 테스트에 사용할 데이터베이스를 구성. 이때 임베디드 데이터베이스를 사용하지 않도록 설정.
@Transactional
: 각 테스트 메서드가 완료된 후 데이터베이스의 상태를 롤백하여 테스트 간의 데이터 격리를 보장.
@TestMethodOrder
: 테스트 메서드의 실행 순서를 지정. 이때 @Order
를 사용해 순서를 정할 수 있다.
@Autowired
: 의존성 주입을 사용하여 테스트 대상 객체를 주입.
JUnit 5
@Test
, @DisplayName
, @Order
, @BeforeEach
: 테스트 메서드와 초기 설정을 정의
AssertJ
assertThat
: 테스트 결과를 검증하는 메서드
2. 적용한 근거 및 목적
- JPA Repository 의 동작을 검증하기 위해, 실제 데이터베이스와의 상호작용을 테스트함으로써 데이터베이스 관련 로직의 정확성을 확인
- 테스트 메서드 간의 데이터 격리를 보장하여 각 테스트가 독립적으로 실행되도록 함
장단점 (근거)
장점
- 데이터 격리:
@Transactional
을 사용하여 각 테스트 후 데이터베이스 상태를 롤백함으로써 테스트 간의 데이터 간섭 방지
- 실제 데이터베이스 사용:
@AutoConfigureTestDatabase
를 사용하여 실제 데이터베이스와 유사한 환경에서 테스트를 수행하여 현실적인 검증이 가능