[JAVA] Automatisieren Sie Integrationstests mit dem Maven Failsafe-Plug-In

Da festgestellt wurde, dass der Integrationstest mithilfe des Maven Failsafe Plugin automatisiert werden kann, wird er als Memorandum bezeichnet.

Beispielsweise kann es verwendet werden, wenn Sie die folgenden Tests automatisieren möchten

Beispielprogramm

Umgebung

Anwendungsimplementierung

--Erstellen Sie ein Maven-Projekt mit dem folgenden Maven-Archetyp image.png

pom.xml


	<dependencies>
		<!-- Servlet API -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>
		<!--Klient-->
		<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>

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() {
	}
}

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() {
		//Anfrage an Server senden
		Response response = ClientBuilder.newClient().target("http://localhost:8080/sample-it/demo").request().get();
		//Stellen Sie sicher, dass der Filter wie erwartet funktioniert
		assertEquals("value", response.getHeaderString("Header-Name"));
		//Stellen Sie sicher, dass das Servlet wie erwartet funktioniert
		assertEquals("body", response.readEntity(String.class).trim());
	}
}

Definieren Sie das ausfallsichere Plugin

später,

--Starten Sie den Anwendungsserver

Machen Sie den Prozess automatisch entsprechend dem Ablauf von ausgeführt.

Verwenden Sie dazu das Failsafe-Plug-In. (Das ausfallsichere Plug-In ist ein Plug-In, das die Testausführung steuern kann. Sie können die Vor- und Nachbearbeitung der Testausführung wie oben beschrieben definieren.) Da Sie den Server nicht starten oder die Anwendung nicht mit dem Failsafe-Plug-In bereitstellen können, Verwenden Sie das Apache Tomcat Maven-Plugin. Folgendes ist eingestellt.

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 für den Betrieb von Tomcat-->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<version>2.2</version>
				<executions>
					<!--Vorverarbeitung der Testausführung-->
					<execution>
						<id>run</id>
						<phase>pre-integration-test</phase>
						<goals>
							<!--Starten Sie die Tomcat / Deploy-Anwendung-->
							<goal>run</goal>
						</goals>
						<!--Einstellungen, um die Ausführung von Zielen nach dem Lauf zu ermöglichen-->
						<configuration>
							<fork>true</fork>
						</configuration>
					</execution>
					<!--Verarbeitung nach dem Test-->
					<execution>
						<id>shutdown</id>
						<phase>post-integration-test</phase>
						<goals>
							<!--Tomcat blieb stehen-->
							<goal>shutdown</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

Der Test kann durch Ausführen des folgenden Befehls durchgeführt werden.

mvn clean verify

Bei Spring Boots scheint SprintBootTest in der Lage zu sein, Integrationstests zu automatisieren, sodass es sich möglicherweise nicht lohnt, das Failsafe-Plug-In zu verwenden. Für Anwendungen wie Spring MVC, die auf einem Server bereitgestellt werden müssen, kann dieses Plug-In jedoch zur Automatisierung verwendet werden. Es scheint verwendbar zu sein, wenn es viele Spezifikationsänderungen gibt, wie z. B. agil.

Recommended Posts

Automatisieren Sie Integrationstests mit dem Maven Failsafe-Plug-In
Integrationstest mit Gradle
Plug-In-Entwicklung mit ImageJ
Automatisieren Sie das Format mit dem Maven-Formatierer
Kombinieren Sie JAR-Dateien mit Systembereich zu einer mit dem Maven Shade Plugin
Kombinieren Sie JAR-Dateien mit Systembereich zu einer mit dem Maven Dependency Plugin