J'ai regardé les réponses et pensé que je voudrais poster une solution plus complète que la réalité montre comment faire le test à l'aide d'embedded GlassFish et sa Apache Maven plugin.
J'ai écrit le processus complet sur mon blog à l'Aide de GlassFish 3.1.1 Intégré avec JUnit 4.x et interface htmlunit 2.x et placé le projet complet à télécharger sur Bitbucket ici: image-servlet
J'était à la recherche d'un autre poste sur une image servlet JSP/JSF balises juste avant j'ai vu cette question. Donc, j'ai combiné la solution que j'ai utilisé de l'autre post avec une unité complète en version testée pour ce poste.
Comment faire pour Tester
Apache Maven a un cycle de vie qui inclut test
. Je vais l'utiliser avec un autre du cycle de vie des appelés integration-test
pour mettre en œuvre ma solution.
- Désactiver le cycle de vie standard de tests unitaires dans le plugin surefire.
- Ajouter
integration-test
dans le cadre de l'exécution de la surefire-plugin
- Ajouter la GlassFish plugin Maven pour le POM.
- Configurer GlassFish à exécuter au cours de l'
integration-test
cycle de vie.
- Exécuter des tests unitaires (tests d'intégration).
GlassFish Plugin
Ajouter ce plugin dans le cadre de l' <build>
.
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<!-- This sets the path to use the war file we have built in the target directory -->
<app>target/${project.build.finalName}</app>
<port>8080</port>
<!-- This sets the context root, e.g. http://localhost:8080/test/ -->
<contextRoot>test</contextRoot>
<!-- This deletes the temporary files during GlassFish shutdown. -->
<autoDelete>true</autoDelete>
</configuration>
<executions>
<execution>
<id>start</id>
<!-- We implement the integration testing by setting up our GlassFish instance to start and deploy our application. -->
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
<goal>deploy</goal>
</goals>
</execution>
<execution>
<id>stop</id>
<!-- After integration testing we undeploy the application and shutdown GlassFish gracefully. -->
<phase>post-integration-test</phase>
<goals>
<goal>undeploy</goal>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
Plugin Surefire
Ajouter/modifier le plugin dans le cadre de l' <build>
.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<!-- We are skipping the default test lifecycle and will test later during integration-test -->
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<!-- During the integration test we will execute surefire:test -->
<goal>test</goal>
</goals>
<configuration>
<!-- This enables the tests which were disabled previously. -->
<skip>false</skip>
</configuration>
</execution>
</executions>
</plugin>
Interface htmlunit
Ajouter les tests d'intégration, comme l'exemple ci-dessous.
@Test
public void badRequest() throws IOException {
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setPrintContentOnFailingStatusCode(false);
final HtmlPage page = webClient.getPage("http://localhost:8080/test/images/");
final WebResponse response = page.getWebResponse();
assertEquals(400, response.getStatusCode());
assertEquals("An image name is required.", response.getStatusMessage());
webClient.getOptions().setThrowExceptionOnFailingStatusCode(true);
webClient.getOptions().setPrintContentOnFailingStatusCode(true);
webClient.closeAllWindows();
}
J'ai écrit le processus complet sur mon blog à l'Aide de GlassFish 3.1.1 Intégré avec JUnit 4.x et interface htmlunit 2.x et placé le projet complet à télécharger sur Bitbucket ici: image-servlet
Si vous avez des questions, veuillez laisser un commentaire. Je pense que c'est un exemple complet pour vous d'utiliser comme base de toute analyse, vous êtes planification pour les servlets.