@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를 로딩하게 된다.