프리 정보 컨텐츠

@RunWith(SpringRunner.class) 이란?? 본문

JAVA/SpringBoot Annotation

@RunWith(SpringRunner.class) 이란??

쏜스 2021. 7. 4. 16:36

단위테스트 코드를 작성하던중 Junit4에서 사용하는 @RunWith(SpringRunner.class)라는 어노테이션을 지속적으로 사용해주었는데 몇 가지 의문점이 생겨서 정리하고자 합니다.

 

의문점은 아래와 같습니다.

  • @SpringBootTest가 아닌 @RunWith(SpringRunner.class)를 사용하는 이유??
  • @RunWith와 더불어 @RunWith(SpringRunner.class) -> 정확히 무슨 역할을 하는지??

대답은 아래와 같습니다.

 

1. @SpringBootTest를 사용하면 application context를 전부 로딩해서 자칫 잘못하면 무거운 프로젝트로서의 역할을 할 수 있습니다. 

 

하지만 Junit4에서 지원하는 @RunWith(SpringRunner.class)를 사용한다면, @Autowired, @MockBean에 해당되는 것들에만 application context를 로딩하게되므로 Junit4에서는 필요한 조건에 맞춰서 @RunWith(SpringRunner.class)를 사용합니다.

 

2. SpringRunner에 대한 별칭으로 SpringJUnit4ClassRunner, JUnit 테스트 라이브러리를 Spring TestContext Framework와 결합합니다. 결합한 이것을 @RunWith(SpringRunner.class)라고 일컫습니다.

 

 

Comments