2009-04-30 3 views
8

과의 통합 테스트를위한 web.xml 파일은 확인이는 가지 관련이있다 : Using jetty to install and run servlet tests programmatically로드까지 부두

이 큰 응답을 얻고, 프로그래밍 서블릿을로드 할 수 있었던 그 모든 멋진로 만들었습니다.

그러나 내가하고 싶은 것은 클래스 패스에있는 모든 테스트에서 web.xml을로드하고 (현재 클래스 패스를 사용하여) 서버를 실행시켜야한다. - 필자는 문서에서 이것을 가리키는 방법을 보았다. 그 일을 할 수있는 디렉토리로 옮긴다. 그러나 나는 classpath에서 일하기를 원한다. 기본적으로 내 web.xml의 유효성을 검사합니다.

(관련이 없지만이 응용 프로그램은 scala이지만 문제는 없었지만 모든 것이 광고 된대로 작동 함).

+0

나는 당신의 문제를 보지 못했습니다. "classpath에있는 모든 것"은 무엇을 의미합니까? 특정 web.xml을 사용하여 Jetty를 시작하려고합니다. 이것은 문제가 안되며 스크립트로 web.xml을 복사하고 Jetty를 시작하십시오. – Mork0075

+0

실제로 테스트로 실행하고 싶습니다. 별도의 프로세스로 시작하지 않아도됩니다. (잘 작동하지만, 프로세스 단위 테스트만큼 깔끔하지는 않습니다.) 단지 편리합니다. –

답변

13

개별 서블릿을로드하는 것과는 대조적으로 적절한 웹 응용 프로그램을 프로그래밍 방식으로로드하는 것으로 들립니다 (전체 WAR 파일을 작업하지 않고도 수행하고 싶다고 생각합니다).

Server server = new Server(port); 
WebAppContext root = new WebAppContext(); 

root.setWar("/path/to/somewhere"); 
root.setContextPath("/"); 

server.addHandler(root); 
server.start(); 

트릭은 /path/to/somewhereWEB-INF 디렉토리를 포함해야하고 web.xml 파일 내부가 살아야한다는 것입니다. 그 밖의 다른 것들은 그 디렉토리 구조 안에서 살아야합니다. 다른 것들은 클래스 패스에서 자동으로로드 될 수 있습니다. (원한다면 실제 WAR 파일의 경로를 만들거나 분해 된 WAR 트리를 완성 할 수도 있습니다).

+0

예 - 그것이 제가 끝내었던 것입니다. 잘 작동합니다. –

+0

(그리고 그 빠른! "단위"테스트를 위해 정말 대단한 단위 테스트!) -이 게시물 BTW를 업데이 트 주셔서 감사합니다. –