spring-boot-strater-test 의존성 주입을 받으면, spring-boot-starter 의존성 폼에 따라서 여러가지 라이브러리들을 가져온다. junit, mockito 등등.. 그리고 spring-boot-starter의 parent에서 버전관리도 해준다.
webEnvironment
- Mock: mock servlet environment. 내장 톰캣 구동 안한다
- RANDON_PORT, DEFINED_PORT: 내장 톰캣 사용 함.
- NONE: 서블릿 환경 제공 안 함
@AutoCofigureMockMVC
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK): Mocking을 한 서블릿 컨테이너가 띄어진다. 그래서 dispatcherServlet이 만들어지긴하는데, Mocking된 서블릿에 활동을 하려면 Mock MVC라는 Client를 꼭 사용해야한다. @AutoCofigureMockMVC를 통해 Mock MVC Client를 사용할 수 있다.
@MockBean
ApplicationContext에 들어있는 빈을 Mock으로 만든 객체로 교체 하고 모든 @Test 마다 자동으로 리셋된다.
슬라이스 테스트
@SpringBootTest는 @SpringBootApplication을 찾아가고 @SpringBootApplication에서 모든 빈 설정들을 테스트용 Application Context를 만들면서 등록한다.
그리고 @MockBean을 찾아서 그 Bean만 Mocking한다.
이렇게 수많은 빈들을 무조건 등록하는 것보다 테스트에 사용되는 빈만 등록하고 싶을 때는 어떻게할까?
슬라이스 테스트용 애노테이션들이 있다. 예를 들어 @WebMvcTest, @DataJpaTest(Repository들만 빈들로 등록된다) 등있다.
'Spring' 카테고리의 다른 글
JDBC (0) | 2020.01.14 |
---|---|
Spring Web MVC (0) | 2020.01.14 |
부록 (0) | 2020.01.14 |
Spring Boot (0) | 2020.01.14 |
AOP 와 PSA (0) | 2020.01.14 |