[스프링] JPA 통합 테스트
스프링 애플리케이션을 개발할 때는 JPA(Java Persistence API)와 함께 테스트를 수행하는 것이 중요합니다. JPA 통합 테스트는 데이터베이스에 액세스하고 모든 레이어에서 수행되는 기능을 테스트하는 데 도움이 됩니다. 이를 통해 애플리케이션의 전반적인 정확성을 확인할 수 있습니다.
JPA 테스트 설정
스프링 부트 프로젝트에서 JPA 테스트를 수행하기 위해 @DataJpaTest
애노테이션을 사용할 수 있습니다. 이를 통해 JPA와 관련된 설정을 자동으로 구성하고 테스트용 데이터베이스를 제공받을 수 있습니다.
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
@DataJpaTest
public class JpaIntegrationTest {
@Autowired
private UserRepository userRepository;
@Test
public void givenUser_whenSave_thenGetOk() {
User user = new User("John", "john@example.com");
userRepository.save(user);
User retrievedUser = userRepository.findByEmail("john@example.com");
assertThat(retrievedUser).isEqualTo(user);
}
}
위의 예제에서 @DataJpaTest
애노테이션은 JPA 관련 구성 요소만 로드하여 경량화된 테스트를 수행합니다.
데이터베이스 설정 조정
@DataJpaTest
는 기본적으로 내장 데이터베이스를 사용하며, 데이터베이스 자동 구성을 허용합니다. 그러나 특정 데이터베이스를 사용하거나 추가적인 설정을 제공해야 하는 경우 @AutoConfigureTestDatabase
애노테이션을 사용하여 데이터베이스 설정을 조정할 수 있습니다.
@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
public class CustomDatabaseTest {
// 테스트 코드
}
위의 예제에서는 @AutoConfigureTestDatabase
애노테이션을 사용하여 실제 데이터베이스를 사용하도록 설정하고 있습니다.
JPA 통합 테스트는 결합된 애플리케이션 레이어를 효과적으로 테스트하고 데이터베이스 액세스 작업을 확인하는 데 도움을 줍니다. 이를 통해 안정적이고 확고한 애플리케이션을 구축할 수 있습니다.
참고 문헌:
- https://spring.io/guides/gs/testing-web/
- https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/jdbc/AutoConfigureTestDatabase.html