Spring/Boot

스프링 부트 활용10 - Test

Bong Gu 2020. 10. 27. 19:19
728x90


springboot

스프릥 부트 개념과 활용10(inflearn) - 백기선

Spring boot

Test

  • spring-boot-starter-test 의존성이 필요하다.
    springboot

@SpringBootTest

  • @RunWith(SpringRunner.class)랑 같이 사용해야 한다.
  • 빈 설정 파일 필요없음. 빈은 알아서 찾는다.(@SpringBootApplication)

webEnvironment

  • MOCK: mock servlet environment

    • 기본값
    • ServletContainer가 사용하지 않는다.
      내장 톰캣 구동 안 함.
    • mocking한 servlet이 뜬다.
    • dispatcher servlet에 요청을 보내는것과 유사한 실험이 가능하다.
    • mockmvc라는 클라이언트가 필요하다.
      springboot
    • stauts(), content() 메소드는 MockMvcResultMatcher에 있는것을 가져온다.
      springboot
  • RANDON_PORT, DEFINED_PORT

    • ServletContainer를 사용한다.
      내장 톰캣 구동함

    • 테스트 TestRestTemplet 또는 테스트용 web client를 사용해야한다.

    • TestRestTemplet
      springboot

    • 원본이 아닌 mocking을 하여 사용할 수 있다.
      springboot

    • WebTestClient
      springboot

      • Java5에 추가 된 RestClient

      • Async 하다.
        테스트 코드에서도 웹클라이언트와 유사한 api를 사용할 수 있다.

      • webflux 의존성 추가가 필요하다.

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-webflux</artifactId>
      </dependency>
      • api가 보다 이해하기 편하다. 추천
  • NONE

    • 서블릿환경제공안함.

슬라이스 테스트

  • @SpringBootTest를 사용 시, @SpringBootApplication을 찾아서 모든 빈을 등록하고 @MockBean이 있으면 해당 빈만 교체한다.

  • 모든 빈이 등록되는걸 원하지 않을 때 사용한다.

  • 레이어 별로 잘라서 테스트하고 싶을 때 사용한다.

  • @SpringBootTest를 대체하여 사용한다.

  • @JsonTest

    • Json형태로 결과가 나올 때, 해당 Json과 관련 된 테스트에 사용
    • JacksonTester<도메인>을 주입 받아 사용한다.
    • reference문서
  • @WebMvcTest
    springboot

    • controller 관련 테스트할 때, 주로 사용
    • web과 관련된 것들만 빈으로 등록된다.
    • 필요한것들은 MockBean으로 등록하여 사용한다.
  • @WebFluxTest

  • @DataJpaTest


테스트 유틸

  • OutputCapture
    • 로그를 포함 콘솔에 찍히는 모든것을 캡쳐한다.
      springboot
  • TestPropertyValues
  • TestRestTemplate
  • ConfigFileApplicationContextInitializer



728x90