2019. 4. 28. 02:14ㆍ[공부] 영상/스프링 부트 강의
spring-boot-test-autoconfigure
Configuration 을 슬라이싱해서 원하는 설정파일만 불러와서 테스트를 진행할 수 있도록 도와준다.
대부분의 @~Test 은 excludeAutoConfiguration 을 지원하므로 이를 사용하면 된다. (ex @JsonTest)
슬라이싱에 관심이 없으면 그냥 @SpringBootTest를 쓰면 된다.
말했다시피 @SpringBootTest는 메인 어플리케이션에 등록된 모든 설정파일을 읽어들인다. 그러므로 가능하면 @EnableBatchProcessing 과 같은 특정 목적을 위한 설정은 메인 어플리케이션에 달아두지 말자. 따로 Configuration 클래스를 둬서 관리하는 것이 좋다. 그렇지 않으면 이 설정을 받아들이는 테스트들이 Spring-Batch도 실행하려고 시도할 것이다.
@WebMvcTest
스프링 MVC 컨트롤러가 제대로 동작하는지 테스트하고 싶으면 @WebMvcTest를 사용하면된다. @WebMvcTest는 스프링 MVC 컨트롤러가 제대로 동작하는지만을 확인하고 싶을 때 사용한다. MVC 관련 인프라 설정을 다 세팅해주고 @Service, @Repository 를 제외한 @Controller, @ControllerAdvice, @JsonComponent 등을 Scan 한다. 더불어 테스트 클라이언트로 MockMvc를 기본적으로 사용할 수 있다,
@WebMvcTest
WebFlux 를 통해 TestWebClient 으로 테스트할 수 있다. WebFlux 를 pom.xml 을 통해 불러와야한다.
@DataJpaTest
1. JPA를 테스트할 수 있다.
2. 내장된 인메모리 DB로 테스트한다. -> 빠르다.
3. 엔티티 정보를 스캔한다.
4. Spring data JPA Repository를 설정해준다.
5. TestEntityManager : 표준 JPA EntityManager를 사용할 수 있다.
* 일반적인 @Component Bean 들은 생성되지 않는다.
@AutoConfigureTestDatabase(replace=Replace.NONE) 을 테스트 클래스에 달아주면 인메모리 DB를 사용하지 않고 실제 DB 에서 테스트하고 데이터를 확인 해볼 수 있다.
그 외 각종 DB 관련 테스트 어노테이션
@JooqTest
@DataMongoTest
@DataNeo4jTest
@DataRedisTest
...
@RestClientTest
REST Client를 테스트할 수 있다. Jackson, Gson 등을 자동 설정한다. MockRestServiceServer를 기본으로 사용할 수 있다. MockRestServiceServer으로 가상의 가짜 서버를 만들고 (호스트가 실제로 뜨는건 아니다. RestTemplate 을 생성할 때 테스트 코드시 이쪽으로 연결되도록 설정하는 것뿐인 듯.) request에 대한 return 정도를 할 수 있게 만들 수 있다.
@RunWith(SpringRunner.class)
@RestClientTest(MyService.class)
public class RestClientTest {
@Autowired
private MyService myService;
@Autowired
private MockRestServiceServer mockServer;
@Before
public void setup(){
mockServer
.expect(requestTo("/greet/details"))
.andRespond(withSuccess("hello", MediaType.TEXT_PLAIN));
}
@Test
public void test() throws Exception {
String greeting = myService.callRestService();
assertThat(greeting).isEqualTo("hello");
}
}
@AutoConfigureRestDocs
클라이언트 테스트 코드의 실행결과로 관련 문서를 자동으로 만들 수 있다.
RestDocumentationResultHandler를 같이 사용하면 메소드 이름을 기반으로 문서를 만들어줄 수 있다.
OutputCapture : JUnit 의 Rule. 테스트를 캡쳐해서 output으로 내놓는다. System.out.println 으로 작성된 아웃풋을 캡쳐하는데, System.out.println를 실제 코드에 들어가서 사용될 일이 없으므로 이거 쓰지말고 그냥 Logger 를 쓰자.
'[공부] 영상 > 스프링 부트 강의' 카테고리의 다른 글
스프링 부트 강의 정리 (26 ~ 27 : Security) (0) | 2019.05.11 |
---|---|
스프링 부트 강의 정리 (23 ~ 25 : 웹플럭스, 컨테이너) (0) | 2019.05.11 |
스프링 부트 강의 정리 (19~20 : 테스트, MockBean) (0) | 2019.04.28 |
스프링 부트 강의 정리 (16~18 : 템플릿 엔진, 에러 핸들링, 데이터 바인딩) (0) | 2019.04.27 |
스프링 부트 강의 정리 (15 : WebJar) (0) | 2019.04.24 |