본문 바로가기

Spring

Test

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