JAVA/SPRING

[SPRING] 스프링부트 테스트관련 어노테이션 정리

gracelove91 2019. 8. 16. 21:56

@SpringBootTest

  • 실제 구동되는 애플리케이션과 똑같이 애플리케이션 컨텍스트를 로드하여 테스트하기 때문에 모든 테스트를 수행할 수 있다.
  • 하지만 Bean을 모두 로드하기 때문에 속도가 느리다
  • @RunWith(SpringRunner.class)와 함께 쓰여야한다. @RunWith(...) 는 JUnit내장 러너대신 어노테이션에 정의된 러너를 사용한다. SpringRunner는 JUnit실행에 필요한 SpringJUnit4ClassRunner를 상속받았다.
  • 프로파일 환경마다 다른 환경값을 부여하고 싶다면 @ActiveProfiles(...) 와 같이 쓴다.
  • 테스트에서 @Transactional을 사용하면 테스트를 마친 뒤 데이터를 롤백한다.
  • @SpringBootTest는 검색알고리즘을 사용하여 @SpringBootApplication이나 @SpringBootConfiguration을 찾는다.

@WebMvcTest

  • MVC를 위한 테스트다. 컨트롤러를 테스트하는데 적합하다. 웹상의 요청과 응답에 대해 테스트가 가능하다.
  • 사용을 위해선 테스트할 특정 컨트롤러명을 명시해주어야한다. 특정 컨트롤러 관련 빈만 로드하여 가벼운 테스트를 수행한다.
  • @Service는 @WebMvcTest의 적용대상이 아니다. Controller에서 사용하는 Service는 @MockBean으로 가짜객체를 만들자.