Miré las respuestas publicadas y pensé que podría publicar una solución más completa que realmente demuestre cómo hacer las pruebas utilizando GlassFish incrustado y su plugin Apache Maven.
escribí el proceso completo para arriba en mi blog Using GlassFish 3.1.1 Embedded with JUnit 4.x and HtmlUnit 2.x y se coloca el proyecto completo para su descarga en Bitbucket aquí: image-servlet
que estaba buscando en otro post en un servlet de imágenes para JSP etiquetas/JSF justo antes de que vi este pregunta.Así que combiné la solución que utilicé en la otra publicación con una versión de prueba completa para esta publicación.
Cómo probar
Apache Maven tiene un ciclo de vida bien definido que incluye test
. Usaré esto junto con otro ciclo de vida llamado integration-test
para implementar mi solución.
- Deshabilitar la prueba de ciclo de vida estándar en el plugin surefire.
- Agregue
integration-test
como parte de las ejecuciones del complemento seguro-
- Agregue el plugin GlassFish Maven al POM.
- Configure GlassFish para ejecutar durante el ciclo de vida
integration-test
.
- Pruebas de unidad de ejecución (pruebas de integración).
GlassFish Plugin
Añadir este plugin como parte de la <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>
éxito seguro Plugin
Añadir/Modificar el plugin como parte de la <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>
HtmlUnit
añadir pruebas de integración como el ejemplo a continuación.
@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();
}
escribí el proceso completo para arriba en mi blog Using GlassFish 3.1.1 Embedded with JUnit 4.x and HtmlUnit 2.x y se coloca el proyecto completo para su descarga en Bitbucket aquí: image-servlet
Si usted tiene alguna pregunta, por favor dejar un comentario. Creo que este es un ejemplo completo para usar como base de cualquier prueba que esté planificando para servlets.
posible duplicado de [servlets Unidad para pruebas] (http://stackoverflow.com/questions/53532/unit-testing- servlets) – Raedwald