[스프링] JPA 테스트

스프링 프레임워크에서 JPA(자바 영속성 API) 를 사용하는 애플리케이션을 개발할 때 테스트는 매우 중요합니다. 일반적으로 JPA 레포지토리의 메서드가 올바르게 작동하며, 데이터베이스와 통합이 잘 되는지 확인해야 합니다.

1. 의존성 추가

먼저, spring-boot-starter-data-jpa 의존성을 추가해야 합니다. 이 의존성은 JPA와 관련된 필수 라이브러리들을 포함하고 있습니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2. JPA 테스트 설정

JPA 테스트를 위해 @DataJpaTest 애노테이션을 사용합니다. 이 애노테이션을 사용하면 테스트용 데이터베이스를 자동으로 설정하고, JPA 레포지토리와 관련된 빈들을 자동으로 스캔하여 테스트할 수 있습니다.

@RunWith(SpringRunner.class)
@DataJpaTest
public class MyRepositoryTests {
    // 테스트 코드 작성
}

3. 테스트 작성

이제 JPA 레포지토리의 메서드가 올바르게 작동하는지 확인하는 테스트를 작성할 차례입니다. 예를 들어, MyEntity 를 저장하고 조회하는 메서드를 가지고 있는 MyRepository 라는 JPA 레포지토리가 있다고 가정해봅시다.

@RunWith(SpringRunner.class)
@DataJpaTest
public class MyRepositoryTests {

    @Autowired
    private MyRepository myRepository;

    @Test
    public void testSaveAndFind() {
        MyEntity entity = new MyEntity();
        entity.setName("Test Entity");
        MyEntity savedEntity = myRepository.save(entity);

        Optional<MyEntity> foundEntity = myRepository.findById(savedEntity.getId());
        assertThat(foundEntity).isPresent();

        assertThat(foundEntity.get().getName()).isEqualTo("Test Entity");
    }
}

4. 테스트 실행

테스트를 실행하면 스프링 부트가 자동으로 인메모리 데이터베이스를 설정하고, 해당 데이터베이스 상에서 JPA 레포지토리 메서드에 대한 테스트를 수행합니다.

이처럼, 스프링에서 JPA를 사용하는 애플리케이션을 개발할 때는 @DataJpaTest 애노테이션과 테스트용 데이터베이스를 활용하여 JPA 테스트를 간편하게 작성할 수 있습니다.

참고 자료

추가 참고: 이 페이지를 참고하여 실제 프로젝트 환경에 맞게 설정하세요.