더북(TheBook)

4.3 실행 중인 애플리케이션 테스트하기

 

웹 애플리케이션은 실제로 작동하는 것으로 테스트하면 가장 좋다. 실제 서버에서 애플리케이션을 실행하고 실제 웹 브라우저로 테스트하는 것이 목 테스트 엔진을 사용할 때보다 사용자가 실제로 애플리케이션을 어떻게 사용하는지 더 잘 보여 주기 때문이다.

하지만 실제 서버와 웹 브라우저로 테스트하기는 조금 까다롭다. 톰캣이나 제티에 애플리케이션을 배포할 빌드타임 플러그인이 있다고 해도 테스트에 적합한 선택은 아니다. 게다가 테스트 대부분은 독립적이거나 빌드 도구 없이 시작하는 것이 거의 불가능하다.

하지만 스프링 부트에는 이것을 해결할 방법이 있다. 스프링 부트에는 톰캣, 제티 등 내장 서블릿 컨테이너를 애플리케이션 일부로 포함하는 기능이 있으므로, 테스트를 진행하는 동안 동일한 메커니즘으로 내장 서블릿 컨테이너를 이용하여 애플리케이션을 실행할 수 있다.

이게 바로 스프링 부트의 @WebIntegrationTest 애너테이션이 하는 일이다. 테스트 클래스에 @WebIntegrationTest 애너테이션을 붙이면 스프링 부트가 테스트용 애플리케이션 컨텍스트를 생성하면서 내장 서블릿 컨테이너도 시작한다. 애플리케이션을 내장 컨테이너와 함께 실행하고 나면 이를 대상으로 실제 HTTP 요청을 보낼 수 있고 결과를 검증할 수 있다.

코드 4-6의 간단한 웹 테스트를 살펴보자. 이 테스트는 서버와 연계하여 애플리케이션을 시작하려고 @WebIntegrationTest 애너테이션을 사용하고, 애플리케이션을 대상으로 HTTP 요청을 수행하려고 스프링의 RestTemplate을 사용한다.3

 

3 역주 

여기서부터는 다시 2장 애플리케이션을 기준으로 테스트한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.