Loading...
Spring Framework Reference Documentation 7.0.2의 Testing의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Spring의 STOMP-over-WebSocket 지원을 사용할 때 애플리케이션을 테스트하는 데에는 두 가지 주요 접근 방식이 있습니다. 첫 번째는 컨트롤러와 그에 어노테이션이 적용된 메시지 처리 메서드의 기능을 검증하기 위한 서버 사이드 테스트를 작성하는 것입니다. 두 번째는 클라이언트와 서버를 실행하는 것을 포함하는 전체 엔드 투 엔드 테스트를 작성하는 것입니다.
이 두 가지 접근 방식은 상호 배타적이지 않습니다. 반대로, 각각은 전체적인 테스트 전략에서 제자리를 차지합니다. 서버 사이드 테스트는 더 집중적이고 작성 및 유지 관리가 더 쉽습니다.
반면 엔드 투 엔드 통합 테스트는 더 완전하며 훨씬 더 많은 것을 테스트하지만, 작성 및 유지 관리가 더 복잡합니다.
가장 단순한 형태의 서버 사이드 테스트는 컨트롤러 단위 테스트를 작성하는 것입니다. 그러나 컨트롤러가 수행하는 많은 작업이 그 어노테이션에 의존하기 때문에 이것만으로는 충분히 유용하지 않습니다.
순수 단위 테스트로는 그것을 테스트할 수 없습니다.
이상적으로는, 테스트 대상 컨트롤러는 런타임에서와 같이 호출되어야 합니다. 즉, HTTP 요청을 처리하는 컨트롤러를 Spring MVC Test 프레임워크를 사용해 테스트하는 접근 방식과 매우 유사하게, Servlet 컨테이너를 실행하지 않고 Spring Framework에 의존하여 어노테이션이 적용된 컨트롤러를 호출하는 방식이어야 합니다.
Spring MVC Test와 마찬가지로, 여기에서도 두 가지 가능한 대안이 있습니다. “컨텍스트 기반” 설정을 사용하거나 “독립형” 설정을 사용할 수 있습니다.
clientInboundChannel을 테스트 필드로 주입한 다음, 이를 사용하여 컨트롤러 메서드에 의해 처리될 메시지를 전송합니다.SimpAnnotationMethodMessageHandler)를 수동으로 설정하고 컨트롤러로 전달할 메시지를 직접 그것에 전달합니다.이 두 가지 설정 시나리오는 tests for the stock portfolio 샘플 애플리케이션에서 모두 데모됩니다.
두 번째 접근 방식은 엔드 투 엔드 통합 테스트를 생성하는 것입니다. 이를 위해서는 WebSocket 서버를 임베디드 모드로 실행하고, STOMP 프레임을 포함하는 WebSocket 메시지를 전송하는 WebSocket 클라이언트로서 여기에 연결해야 합니다.
tests for the stock portfolio 샘플 애플리케이션은 또한 Tomcat을 임베디드 WebSocket 서버로 사용하고, 테스트 목적을 위한 심플 STOMP 클라이언트를 사용하여 이 접근 방식을 데모합니다.
Monitoring
Other Web Frameworks