[스프링] 스프링 테스트 슬라이스
스프링 애플리케이션을 테스트할 때 전체 애플리케이션 컨텍스트를 불러오는 것이 아니라 애플리케이션의 일부 슬라이스를 테스트하고 싶을 때 스프링 테스트 슬라이스를 사용할 수 있습니다.
스프링 테스트 슬라이스란?
테스트 슬라이스는 트랜잭션, 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 레이어에 특화된 테스트 슬라이스를 정의합니다. 특정 컴포넌트를 자동으로 구성하므로 테스트 환경을 쉽게 구축할 수 있습니다.
요약
스프링 테스트 슬라이스를 사용하면 전체 애플리케이션을 로드하지 않고도 필요한 컴포넌트를 효과적으로 테스트할 수 있습니다. 각 슬라이스는 특정 계층이나 기능에 특화되어 있으며, 테스트 코드를 작성하는 데 유용한 기능들을 자동으로 제공합니다.