Maven Failsafe 플러그인을 사용하여 결합 테스트 자동화
15521 단어 IntegrationTest자바Maven
예를 들어, 다음과 같은 테스트를 자동화하고 싶을 때 사용할 수 있습니다.
샘플 프로그램
환경
애플리케이션 구현
pom.xml
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- クライアント -->
<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() {
// サーバーへリクエスト送信
Response response = ClientBuilder.newClient().target("http://localhost:8080/sample-it/demo").request().get();
// フィルターが想定通り動作していることを確認
assertEquals("value", response.getHeaderString("Header-Name"));
// サーブレットが想定通り動作していることを確認
assertEquals("body", response.readEntity(String.class).trim());
}
}
Failsafe 플러그인 정의
그 후,
의 흐름으로 처리를 자동 실행시키도록 한다.
이를 위해 Failsafe 플러그인을 사용합니다.
(Failsafe 플러그인은 테스트 실행을 제어할 수 있는 플러그인. 위와 같이 테스트 실행의 전처리나 후처리를 정의할 수 있다.)
서버 시작 응용 프로그램 배포는 Failsafe 플러그인에서 사용할 수 없으므로,
Apache Tomcat Maven 플러그인 를 이용.
다음이 설정.
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>
<!-- Tomcat操作用プラグイン -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<!-- テスト実行前処理 -->
<execution>
<id>run</id>
<phase>pre-integration-test</phase>
<goals>
<!-- Tomcat起動・アプリケーションのデプロイ -->
<goal>run</goal>
</goals>
<!-- run以降のゴールが実行できるようにするための設定 -->
<configuration>
<fork>true</fork>
</configuration>
</execution>
<!-- テスト実行後処理 -->
<execution>
<id>shutdown</id>
<phase>post-integration-test</phase>
<goals>
<!-- Tomcat停止 -->
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
테스트는 다음 명령을 실행하여 수행 할 수 있습니다.
mvn clean verify
Spring Boot계는 SprintBootTest를 사용하면, 결합 테스트도 자동화할 수 있을 것 같기 때문에 Failsafe 플러그인을 이용할 가치는 없을지도 모른다. 다만, Spring MVC 등 서버에 배치하지 않으면 안 되는 어플리케이션의 경우는, 본 플러그인을 이용하면 자동화할 수 있다. 민첩 등 사양 변경이 많이 발생하는 경우에는 사용할 수있을 것.
Reference
이 문제에 관하여(Maven Failsafe 플러그인을 사용하여 결합 테스트 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Imasug/items/e6036ce8203eb8abfc86텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)