[스프링] 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 통합 테스트는 결합된 애플리케이션 레이어를 효과적으로 테스트하고 데이터베이스 액세스 작업을 확인하는 데 도움을 줍니다. 이를 통해 안정적이고 확고한 애플리케이션을 구축할 수 있습니다.

참고 문헌: