2013-06-17 4 views
1

maven 프로젝트에서 WireMock (v1.32)을 사용하여 웹 서비스를 조롱하려고합니다. 테스트를 진행하기 위해 부두 (v8.1.8)를 사용하여 전쟁을 전개하고 있습니다. 나는 (내 치어 파일의 부두 플러그인에서) 부두에 WireMock를 실행하려면 다음과 같은 방법을 시도했다 :maven에서 Jetty에 WireMock 배치하기

<execution> 
        <id>start-wiremock</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>deploy-war</goal> 
        </goals> 
        <configuration> 
         <war>${project.build.directory}/dependent-war/wiremock-war.war</war> 
         <scanIntervalSeconds>0</scanIntervalSeconds> 
         <daemon>true</daemon> 
         <scanIntervalSeconds>10</scanIntervalSeconds> 
         <webApp> 
          <contextPath>/wiremock</contextPath> 
          <tempDirectory>${project.build.directory}/tmp2</tempDirectory> 
         </webApp> 
         <connectors> 
          <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
           <port>${wiremock.port}</port> 
          </connector> 
         </connectors> 
         <systemProperties> 
          <systemProperty> 
           <name>shared.system.config.file</name> 
           <value>file:///${project.basedir}/src/test/resources/shared.properties</value> 
          </systemProperty> 
          <systemProperty> 
           <name>file.location.base.path</name> 
           <value>${basedir}</value> 
          </systemProperty> 
         </systemProperties> 
        </configuration> 
       </execution> 

그리고 : 찾을

<contextHandlers> 
        <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext"> 
         <war>${project.build.directory}\dependent-war\wiremock-war.war</war> 
         <tempDirectory>${project.build.directory}/tmp2</tempDirectory> 
         <contextPath>/wiremock</contextPath> 
        </contextHandler> 
       </contextHandlers> 

그러나, 나는왔다 수없는 어떤 추가 정보 서블릿을 통해 WireMock에서 서비스를 실행하는 방법에 대해 설명합니다.

서블릿에서 실행할 때 WireMock에 대한 포트 및 호스트를 지정하는 방법에 대한 정보를 찾을 수 없습니다. 이 설정에 대한 도움을 주시면 매우 감사하겠습니다.

필자는 철저한 초보자이므로 철자가 틀린 부분이 있으면 부탁드립니다. 추가하겠습니다.

답변

1

먼저 WireMock을 프로그래밍 방식으로 시작하거나 독립 실행 형 JAR을 실행하는 것이 좋습니다. 테스트 코드의 시작에서

java -jar wiremock-1.32-standalone.jar --port <your port number> 

서버가 어디 있는지 클라이언트에게 필요합니다 :

프로그램 시작을위한 몇 가지 옵션이 있습니다
WireMock.configureFor("<wiremock server host>", <your port number>); 

: 1)의 경우는 ' 의 JUnit을 사용하고 여기에 설명 된 바와 같이, 당신은 단지 @Rule을 추가 할 수 있습니다 http://wiremock.org/getting-started.html#junit-4-x 2) 다른 테스트 프레임 워크를 들어, 수있는 서버를 백업 새로운 : http://wiremock.org/getting-started.html#non-junit-and-general-java-usage

WireMock의 일부 기능은 컨테이너에 배치되었을 때 사용할 수 없다는 점은 주목할만한 가치가 있습니다 (주로 결함 주입 관련).

컨테이너 내부를 실행할 수있는 선택의 여지가 없다면 다음과 같은 몇 가지주의 할 점이 있습니다. 서버의 호스트와 포트가 컨테이너 설정에 설정되어 있으므로 원하는 Maven 플러그인 설정에서 같은 :

루트가 아닌 URL 아래에있는 WAR을 배치 한 경우
<connectors> 
    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
     <port>9090</port> 
    </connector> 
</connectors> 

, 당신은이 예에 대한 클라이언트를 알려줄 필요

WireMock.configureFor("my.jetty.host", 9090, "/wiremock"); 
+1

현재 버전 1.33은 출시되지 않았으므로 컨테이너에 올바르게 배포했을 때 쉽게 테스트 할 수 있습니다. 웹 브라우저에서 http : // localhost : 8080/wiremock/__ admin을 누르기 만하면됩니다. 모두 정상적으로 작동하면 (처음에는 비어있는) 스텁 매핑 목록이 나타납니다. – Tom