Launch SOAP UI Mock with JUnit
vendredi 29 août 2008
SOAP UI permet de créer des mocks à partir d'un WSDL ou d'une connexion sur un Web service de test. Quand ces mocks sont créés par les fournisseurs de service, il peut être intéressant de pouvoir les utiliser directement dans les tests JUnit ou dans une page Fitnesse plutôt que de devoir installer SOAP UI et de lancer les mocks, voici ce que propose ce tutorial.
Ajouter les dépendances dans le projet Maven:
<dependency>
<groupId>xmlbeans</groupId>
<artifactId>xbean</artifactId>
<version>2.3.0-trunk-patched</version>
</dependency>
<dependency>
<groupId>xmlbeans</groupId>
<artifactId>xbean_xpath</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>xmlbeans</groupId>
<artifactId>xmlpublic</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>xmlbeans</groupId>
<artifactId>jsr173</artifactId>
<version>xmlbeans-2.3.0</version>
</dependency>
<dependency>
<groupId>eviware</groupId>
<artifactId>soapui</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>eviware</groupId>
<artifactId>soapui-xmlbeans</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>xmlbeans</groupId>
<artifactId>xbean_xpath</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.0.1-soapui</version>
</dependency>
<dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk15</artifactId>
<version>138</version>
</dependency>
<dependency>
<groupId>jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.5</version>
</dependency>
<dependency>
<groupId>jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>6.1.5</version>
</dependency>
<dependency>
<groupId>jetty</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5-6.1.5</version>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.2-fixed</version>
</dependency>
<dependency>
<groupId>groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.8</version>
</dependency>
<dependency>
<groupId>saxon</groupId>
<artifactId>saxon-dom</artifactId>
<version>8.8</version>
</dependency>
Et le repository SOAP UI pour télécharger les jars:
<repositories>
<repository>
<id>eviwareRepository</id>
<url>http://www.eviware.com/repository/maven2</url>
</repository>
</repositories>
Dans votre test JUnit, il vous suffit de démarrer les mocks de la façon suivante:
private static ListEt de les arrêter comme suit:runners; private static List runners; @BeforeClass public static void startSoapUIMocks() throws Exception { runners = new ArrayList (); WsdlProject project = new WsdlProject("/etc/mocks/soapui-project-sample.xml"); for (int c = 0; c < project.getMockServiceCount(); c++) { MockService mockService = project.getMockServiceAt(c); mockService.addMockRunListener(new LogListener()); runners.add(mockService.start()); } } ... } class LogListener implements MockRunListener { public void onMockRunnerStart(MockRunner mockRunner) { } public void onMockRunnerStop(MockRunner mockRunner) { } public void onMockResult(MockResult result) { } public void onMockRequest(MockRunner runner, HttpServletRequest request, HttpServletResponse response) { } }
@AfterClass
public static void endSoapUIMocks() throws Exception {
for (MockRunner runner : runners)
runner.stop();
}
Pas si dur finallement ?
