Puisqu'il a été constaté que le test d'intégration peut être automatisé en utilisant Maven Failsafe Plugin, il est décrit comme un mémorandum.
--Envoyez une demande à l'application qui crée des informations de réponse avec un servlet ou un filtre et confirmez que la réponse attendue est renvoyée.
--Créez un projet Maven avec l'archétype Maven ci-dessous
--Définissez les dépendances sous la forme suivante
pom.xml
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--client-->
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.28</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.28</version>
<scope>test</scope>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
--Préparez le code source suivant
DemoServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
private static final long serialVersionUID = 2564544155028547344L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().println("body");
}
}
DemoFilter.java
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
@WebFilter("/demo")
public class DemoFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response);
wrapper.setHeader("Header-Name", "value");
chain.doFilter(request, wrapper);
}
@Override
public void destroy() {
}
}
--Préparez le code de test suivant
DemoIT.java
import static org.junit.Assert.assertEquals;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
import org.junit.Test;
public class DemoIT {
@Test
public void test() {
//Envoyer la demande au serveur
Response response = ClientBuilder.newClient().target("http://localhost:8080/sample-it/demo").request().get();
//Assurez-vous que le filtre fonctionne comme prévu
assertEquals("value", response.getHeaderString("Header-Name"));
//Assurez-vous que le servlet fonctionne comme prévu
assertEquals("body", response.readEntity(String.class).trim());
}
}
plus tard,
--Démarrez le serveur d'applications --Déployez l'application sur le serveur --Exécuter la classe de test
Rendre le processus automatiquement exécuté en fonction du flux de.
Pour cela, utilisez le plug-in Failsafe. (Le plug-in Failsafe est un plug-in qui peut contrôler l'exécution des tests. Vous pouvez définir le prétraitement et le post-traitement de l'exécution du test comme décrit ci-dessus.) Puisque vous ne pouvez pas démarrer le serveur ou déployer l'application avec le plug-in Failsafe, Utilisez le plugin Apache Tomcat Maven. Ce qui suit est défini.
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M3</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<!--Plugin pour faire fonctionner Tomcat-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<!--Prétraitement de l'exécution des tests-->
<execution>
<id>run</id>
<phase>pre-integration-test</phase>
<goals>
<!--Lancer l'application Tomcat / Deploy-->
<goal>run</goal>
</goals>
<!--Paramètres pour activer l'exécution des objectifs après l'exécution-->
<configuration>
<fork>true</fork>
</configuration>
</execution>
<!--Traitement post-test-->
<execution>
<id>shutdown</id>
<phase>post-integration-test</phase>
<goals>
<!--Tomcat s'est arrêté-->
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Le test peut être effectué en exécutant la commande suivante.
mvn clean verify
Pour Spring Boots, SprintBootTest semble être en mesure d'automatiser les tests d'intégration, il ne vaut donc peut-être pas la peine d'utiliser le plug-in Failsafe. Cependant, pour les applications telles que Spring MVC qui doivent être déployées sur un serveur, ce plug-in peut être utilisé pour l'automatiser. Il semble être utilisable lorsqu'il y a de nombreux changements de spécifications tels que l'agilité.
Recommended Posts