[스프링] 스프링 테스트 슬라이스

스프링 애플리케이션을 테스트할 때 전체 애플리케이션 컨텍스트를 불러오는 것이 아니라 애플리케이션의 일부 슬라이스를 테스트하고 싶을 때 스프링 테스트 슬라이스를 사용할 수 있습니다.

스프링 테스트 슬라이스란?

테스트 슬라이스는 트랜잭션, JPA, 데이터 계층, 웹 계층 등과 같은 특정 스프링 컴포넌트를 테스트하기 위한 환경을 제공합니다. 각 슬라이스는 애플리케이션의 다른 부분들과 관련된 것들을 자동으로 구성합니다.

이러한 슬라이스는 @DataJpaTest, @WebMvcTest, @WebFluxTest, @JsonTest, @RestClientTest, @JsonTest 등과 같은 애너테이션으로 사용할 수 있습니다.

예제

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

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private UserRepository userRepository;

    @Test
    public void whenFindById_thenReturnUser() {
        // given
        User user = new User("testuser");
        entityManager.persist(user);
        entityManager.flush();

        // when
        Optional<User> found = userRepository.findById(user.getId());

        // then
        assertTrue(found.isPresent());
    }
}

위의 예제에서 @DataJpaTest는 JPA 레이어에 특화된 테스트 슬라이스를 정의합니다. 특정 컴포넌트를 자동으로 구성하므로 테스트 환경을 쉽게 구축할 수 있습니다.

요약

스프링 테스트 슬라이스를 사용하면 전체 애플리케이션을 로드하지 않고도 필요한 컴포넌트를 효과적으로 테스트할 수 있습니다. 각 슬라이스는 특정 계층이나 기능에 특화되어 있으며, 테스트 코드를 작성하는 데 유용한 기능들을 자동으로 제공합니다.

참고 자료