문제

Tomcat 서블릿 컨테이너 아래에서 실행되는 여러 서블릿이 있습니다.테스트 코드와 프로덕션 코드를 분리하고 싶어서 테스트 프레임워크 사용을 고려하게 되었습니다.JUnit은 Eclipse에 잘 통합되어 있지만 실행 중인 Tomcat 서버를 사용하여 서블릿을 실행하도록 만드는 데 실패했습니다.Tomcat 서블릿 테스트를 지원하는 단위 테스트 프레임워크를 추천해 주시겠습니까?Eclipse 통합은 훌륭하지만 꼭 필요한 것은 아닙니다.

도움이 되었습니까?

해결책

확인해 보세요 서블릿단위, 이는 HttpUnit의 일부입니다.간단히 말해서, ServletUnit은 서블릿 컨테이너와 요청 및 응답 객체와 같은 기타 서블릿 관련 객체를 모형화하기 위해 일반 JUnit 테스트에서 사용할 수 있는 모형 및 유틸리티 라이브러리를 제공합니다.위 링크에는 예제가 포함되어 있습니다.

다른 팁

Spring Framework에는 Servlet API의 여러 클래스에 대해 준비된 멋진 모의 개체가 있습니다.

http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/mock/web/package-summary.html

좋아요.'tomcat' 비트를 무시하고 서블릿에 코딩하는 가장 좋은 방법은 응답 및 요청 개체에 대한 모의 개체를 만든 다음 예상되는 내용을 알려주는 것입니다.

따라서 표준 빈 doPost의 경우 EasyMock, 당신은

public void testPost() {
   mockRequest = createMock(HttpServletRequest.class);
   mockResponse = createMock(HttpServletResponse.class);
   replay(mockRequest, mockResponse);
   myServlet.doPost(mockRequest, mockResponse);
   verify(mockRequest, mockResponse);
}

그런 다음 doPost에 코드 추가를 시작하세요.모의 테스트는 기대치가 없기 때문에 실패할 것이며, 거기에서 기대치를 설정할 수 있습니다.

클래스와 함께 EasyMock을 사용하려면 EasyMock 클래스 확장 라이브러리를 사용해야 합니다.하지만 그 이후부터는 같은 방식으로 작동합니다.

HTTP 요청 및 응답을 처리하는 코드 부분을 비즈니스 논리 또는 데이터베이스 조작을 수행하는 부분과 분리하세요.대부분의 경우 이는 데이터 계층(데이터베이스/지속성용), 서비스 계층(비즈니스 로직용) 및 프레젠테이션 계층(HTTP 요청 및 응답용)으로 구성된 3계층 아키텍처를 생성합니다.

  1. 서블릿 내용이 전혀 없이 처음 두 레이어를 단위 테스트할 수 있습니다.그런 식으로 테스트하는 것이 더 쉬울 것입니다.
  2. 프레젠테이션 레이어를 테스트할 수 있습니다. 다른 사람들이 제안한대로, 모의 HTTP 요청 및 응답 객체를 사용합니다.
  3. 마지막으로, 정말 필요하다고 생각되면 다음과 같은 도구를 사용하여 통합 테스트를 수행할 수 있습니다. HtmlUnit 또는 JWebUnit .

"컨테이너 내" 테스트에 대해서는 다음을 살펴보십시오. 선인장

실행 중인 컨테이너 없이 테스트할 수 있으려면 자체 모의 개체를 사용하여 해당 구성 요소를 시뮬레이션할 수 있습니다(예:~와 함께 EasyMock) 아니면 시도해 볼 수도 있습니다 모의러너 서블릿, jdbc 연결 등을 테스트하기 위해 "미리 정의된" 스텁이 있습니다.

2018년 2월 업데이트됨: OpenBrace Limited가 폐쇄되었습니다, ObMimic 제품은 더 이상 지원되지 않습니다.

Servlet의 JUnit 테스트를 위해 ServletUnit에 대한 새로운 대안을 원한다면 내 회사에서 찾을 수 있습니다. ObMimic 유용한 도서관.홈페이지에서 무료로 이용 가능해요 다운로드 페이지.

ServletUnit과 마찬가지로 Servlet API를 시뮬레이션하기 위해 서블릿 컨테이너 외부의 일반 JUnit 또는 TestNG 테스트에서 사용할 수 있는 클래스 라이브러리를 제공합니다.

해당 Servlet API 객체에는 인수가 없는 생성자가 있고 모든 관련 Servlet API 데이터 및 설정에 대해 완벽하게 구성 및 검사가 가능하며 Servlet API의 javadoc에서 지정한 모든 동작에 대한 완전한 시뮬레이션을 제공합니다.테스트를 돕기 위해 Servlet API 호출의 선택적 기록, 컨테이너 종속 동작 제어, 모호한 호출(예:서블릿 API 동작이 완전히 정의되지 않은 경우) 및 JNDI 조회에 의존하는 서블릿 코드에 대한 인메모리 JNDI 시뮬레이션이 있습니다.

자세한 내용, 예제 코드, "방법" 가이드, Javadoc 등을 보려면 웹사이트를 참조하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top