@RunWith(SpringJUnit4ClassRunner.class)
: JUnit 애너테이션인 @RunWith에 SpringJUnit4ClassRunner.class를 지정하면 JUnit 테스트에서 스프링의 기능을 사용할 수 있습니다.
@SpringApplicationConfiguration(classes = App.class)
: @SpringApplicationConfiguration으로 테스트용 ApplicationContext를 만듭니다. (@EnableAutoConfiguration을 붙인 클래스를 지정합니다.)
@WebAppConfiguration
: @WebAppConfiguration으로 웹 애플리케이션 테스트임을 알립니다. 이 애너테이션과 @SpringApplicationConfiguration을 조합하면 내장 서버를 실행할 수 있습니다.
@IntergrationTest("server.port:0")
: @IntergrationTest로 통합 테스트 기능을 활성화 합니다.
value 속성으로 테스트할 때 사용할 속성을 덮어쓸 수 있습니다.
위 예제에서는 server.port 속성에 테스트용 서버 포트를 지정합니다.
0 으로 지정하면 현재 비어 있는 포트를 사용할 수 있습니다. 이 기능은 다른 프로세스가 사용하고 있는 포트를 중복 사용해서 테스트가 실패하는 일이 일어나지 않게 하므로 아주 편리합니다.
@Value("${local.server.port}")
int port;
위 @IntergrationTest("server.port:0") 에서 사용한 포트 번호를 주입합니다
속성값을 주입 하려면 @Value("${속성이름}") 형식을 씁니다.
RestTemplate restTemplate = new TestRestTemplate();
: 실행한 내장 서버에 접속하기 위해 HTTP 클라이언트를 준비합니다.
TestRestTemplate은 일반적인 RestTemplate에 비해 오류가 발생해도 바로 처리하는 기능과 쉽게 Basic 인증을 설정할 수 있는 기능과 같은 테스트용 설정 기능이 추가되어 있습니다.
@Test
public void testHome() {
ResponseEntity<String> response = restTemplate.getForEntity(
"http://localhost" + port, String.class););
assertThat(response.getStatusCode(), is(HttpStatus.OK));
assertThat(response.getBody(), is("Hello World!"));
}
RestTemplate의 getForEntity() 메소드를 사용해서 HTTP GET 방식으로 요청 합니다.
첫 번째 인자에는 URL을, 두 번째 인자에는 직렬화에 사용할 타입을 지정합니다.
ResponseEnity에는 HTTP 응답의 상태 코드, 헤더 내용이 저장되어 있습니다.
'ⓦeb ⓢtory > Spring' 카테고리의 다른 글
[SpringBoot] QuickStart (0) | 2018.03.10 |
---|