2012-03-20 15 views
6

Mi chiedevo come eseguire alcuni test di integrazione per un WSClient. Il mio progetto è costruito con Maven.SoapUI Mock integrato nel test di Maven

Per testare l'inizializzazione della configurazione e alcune richieste ho pensato che fosse una buona idea avviare un servizio SoapUI Mock. Poi sono entrato in quella configurazione recuperata da alcuni post.

Nel mio pom.xml

<plugin> 
      <groupId>eviware</groupId> 
      <artifactId>maven-soapui-plugin</artifactId> 
      <version>4.0.1</version> 
      <executions> 
       <execution> 
        <id>StartupMock</id> 
        <configuration> 
         <projectFile>src/test/soapui/MyMock-soapui-project.xml</projectFile> 
         <outputFolder>${project.build.directory}/surefire-reports</outputFolder> 
         <junitReport>true</junitReport> 
         <host>http://127.0.0.1:8181</host> 
         <mockService>DataProviderMock</mockService> 
        </configuration> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <phase>test</phase> 
       </execution> 
      </executions> 
     </plugin> 

mio MockService chiamato MyMock avrebbe dovuto essere avviato su http://127.0.0.1:8181/somepath dove il mio WSClient potrebbe inviare le richieste. Ma non ero in grado di avviare la simulazione durante la fase mvn test.

È il modo appropriato per testare WSClients? In tal caso, dov'è il problema o l'errata configurazione?

MODIFICA: non vi sono errori. Non riesco a vedere il finto ascolto su quella porta 8181. Gli unici messaggi che vedo (da soapui.log) sono:

2012-03-21 10:17:21,011 WARN [SoapUI] Missing folder [D:\proyectos\everest-utils\everest-bridge\trunk\.\ext] for external libraries 
2012-03-21 10:17:21,392 INFO [DefaultSoapUICore] initialized soapui-settings from [C:\Users\rromero\soapui-settings.xml] 
2012-03-21 10:17:23,205 INFO [WsdlProject] Loaded project from [file:/D:/proyectos/everest-utils/everest-bridge/trunk/src/test/soapui/MyMock-soapui-project.xml] 
2012-03-21 10:17:23,891 INFO [SoapUITestCaseRunner] Running soapUI tests in project [DataProvider] 
2012-03-21 10:17:23,894 INFO [SoapUITestCaseRunner] Running Project [MyMock], runType = SEQUENTIAL 
2012-03-21 10:17:23,900 INFO [SoapUITestCaseRunner] Project [MyMock] finished with status [FINISHED] in 0ms 

Than in anticipo e cordiali saluti,

Ruben

+0

Che tipo di errore stai vedendo? – nwinkler

+0

Ho modificato la mia domanda. Grazie. –

risposta

6

Secondo http://www.soapui.org/Test-Automation/maven-2x.html è necessario eseguire l'obiettivo mock al posto del test obiettivo. Si prega di modificare la sezione goal per chiamare il mock obiettivo:

<plugin> 
     <groupId>eviware</groupId> 
     <artifactId>maven-soapui-plugin</artifactId> 
     <version>4.6.1</version> 
     <executions> 
      <execution> 
       <id>StartupMock</id> 
       <configuration> 
        <projectFile>src/test/soapui/MyMock-soapui-project.xml</projectFile> 
        <outputFolder>${project.build.directory}/surefire-reports</outputFolder> 
        <junitReport>true</junitReport> 
        <host>http://127.0.0.1:8181</host> 
        <mockService>DataProviderMock</mockService> 
        <noBlock>true</noBlock> 
       </configuration> 
       <goals> 
        <goal>mock</goal> 
       </goals> 
       <phase>process-test-classes</phase> 
      </execution> 
     </executions> 
    </plugin> 

Due ulteriori modifiche:

  • Assicurati di iniziare il test di simulazione in una fase precedente per eseguire i test, per esempio in pre-integration-test o process-test-classes
  • Aggiungere l'opzione noBlock con true.

Vedere sopra per esempio.

+0

Ho cambiato l'obiettivo e sì ha iniziato la simulazione. Ma aspetta che l'utente preme un tasto qualsiasi. C'è un modo per continuare a eseguire la simulazione prima dei test della junit fino a quando i test non vengono superati? Sembra che solo possa essere utilizzato dopo l'esecuzione dei test. Grazie @nwinkler –

+0

Ad ogni modo sto cercando di usare 'SoapUIMockServiceRunner' nel mio metodo' @ BeforeClass', forse è una soluzione migliore. –

+0

Ho aggiunto al mio esempio per affrontare alcuni di questi. – nwinkler