본문으로 건너뛰기

@RunWith과 @SpringBootTest

Junit5를 통해서 테스트를 할때 자주 등장하는 어노테이션인데 어떤 상황에서 어떻게 왜 쓰는지 정도는 알고 넘어가려고 자료를 찾아봤다
잘 정리해두신분이 계셔서 퍼옴..

SpringRunner는 SpringJUnit4ClassRunner의 단축어

@RunWith 이 하는일?

  • JUnit 테스트의 lifecycle 및 테스트가 어떻게 실행시킬 것인지 정의
  • @RunWith(SpringRunner.class)는 @Mock 과 @Autowired등의 기능을 JUnit에서 사용할 수 있도록 해주는 브릿지

@RunWith과 @SpringBootTest의 차이점?

  • @RunWith(SpringRunner.class)는 가벼움(일부 Spring 기능만을 사용 및 주입)
  • @SpringBootTest는 ApplicationContext를 모두 적재하기에 시간이 오래걸림(당연히 유닛 테스트에 사용하면 안 됨)

JUnit4 라면

  • JUnit4 라면 @RunWith(SpringRunner.class)와 @DataJpaTest를 같이 써주어야함

@SpringBootTest를 사용하면 모든 application context를 다 로딩하게 되는데

@RunWith(SpringRunner.class)를 사용한다면, @Autowire, @MockBean에 해당되는 것들에만 application context를 로딩하게 된다.