與Maven 3,Failsafe和Cargo插件的集成測試

開箱即用,可以在Maven中進行單元測試。 因此,它也經常用于集成測試。 這樣做的主要缺點是集成測試可能需要花費更多的時間來執行,并且因為沒有人喜歡每次構建都要等待很長時間–使用-Dmaven.test.skip=true標志可以跳過測試
為了執行與Maven的集成測試,我們應該使用Maven Failsafe插件 。 因此,我們可以通過調用mvn test或使用mvn verify執行集成測試來快速運行單元測試。
集成測試應在盡可能與生產環境相似的環境中運行。 如果您的應用程序是WAR或EAR軟件包,則可以使用Maven Cargo插件來告訴Maven將其部署在應用程序服務器或servlet容器上,并在已部署的應用程序上執行集成測試。

Maven故障安全插件配置

為了啟用集成測試階段,必須將故障安全插件配置添加到pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">...<build><plugins>...<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-failsafe-plugin</artifactId><version>2.12</version><executions><execution><goals><goal>integration-test</goal><goal>verify</goal></goals></execution></executions></plugin></plugins></build>...
</project>

現在,當調用mvn verify時,包含測試匹配的所有文件src/test/java/**/*IT.java將在集成測試階段執行。

集成測試不過是使用JUnit或TestNG批注的類來告訴Maven哪個方法是測試,并且應該使用與進行單元測試相同的方式來聲明。 ?

Maven Cargo插件配置

Cargo插件支持市場上所有主要的應用服務器 。 在我的示例中,我將使用默認的Apache Tomcat 7安裝。

  • tomcat正在預集成階段啟動
  • Tomcat正在整合后階段被停止
<plugin><groupId>org.codehaus.cargo</groupId><artifactId>cargo-maven2-plugin</artifactId><version>1.2.0</version><configuration><container><containerId>tomcat7x</containerId><zipUrlInstaller><url>http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.16/bin/apache-tomcat-7.0.16.zip</url><downloadDir>${project.build.directory}/downloads</downloadDir><extractDir>${project.build.directory}/extracts</extractDir></zipUrlInstaller></container></configuration><executions><execution><id>start-tomcat</id><phase>pre-integration-test</phase><goals><goal>start</goal></goals></execution><execution><id>stop-tomcat</id><phase>post-integration-test</phase><goals><goal>stop</goal></goals></execution></executions>
</plugin>

效果很好。 現在,當您第一次執行mvn verify時,您可以看到在集成測試運行之前正在下載并啟動Tomcat。 ?

集成測試類示例

現在,我們終于可以編寫有用的集成測試了-將檢查應用程序是否發送正確的錯誤代碼作為響應。

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.junit.Test;import java.io.IOException;import static org.fest.assertions.Assertions.assertThat;public class CheckApplicationDeployIT {private static final String URL = "http://localhost:8080/myApp/testURL";@Testpublic void testIfAppIsUp() throws IOException {//givenHttpClient client = new DefaultHttpClient();HttpGet httpget = new HttpGet(URL);//whenHttpResponse response = client.execute(httpget);//thenassertThat(response.getStatusLine().getStatusCode()).isEqualTo(HttpStatus.SC_OK);}
}

當然,集成測試應該更復雜,并且實際上要測試行為。 現在,您可以設置Waitr,Selenium或任何其他滿足您最佳需求的解決方案,并創建實際的集成測試。 ?

結論

您是否總是應該在集成測試中測試已部署的應用程序? 它非常有用,但并非總是如此。 如果您的應用程序某種程度上取決于用戶的IP地址,您將無法在不同的請求中對其進行更改。

但是,如果您的應用程序是具有HTML或REST前端的經典Web應用程序,則強烈建議使用。

參考: 軟件開發之旅博客上來自JCG合作伙伴 Maciej Walkowiak的Maven 3,故障安全和Cargo插件的集成測試 。


翻譯自: https://www.javacodegeeks.com/2012/07/integration-tests-with-maven-3-failsafe.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372088.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372088.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372088.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring入門第二十五課

使用具名參數 直接看代碼&#xff1a; db.properties jdbc.userroot jdbc.passwordlogan123 jdbc.driverClasscom.mysql.jdbc.Driver jdbc.jdbcUrljdbc:mysql://localhost:3306/selective-courses-systemjdbc.initPoolSize5 jdbc.maxPoolSize10 applicationContext.xml <?x…

linux強制回收內存,Linu系統cache強制回收

LINUX的內存管理機制&#xff0c;一般情況下不需要特意去釋放已經使用的cache。Cache機制的存在&#xff0c;使得Linux對磁盤的讀寫速度是有較大的好處的。 在 Linux 操作系統中&#xff0c;當應用程序需要讀取文件中的數據時&#xff0c;操作系統先分配一些內存&#xff0c;將…

HDU 1412 {A} + {B}

Problem Description給你兩個集合。要求{A} {B}.注:同一個集合中不會有兩個同樣的元素.Input每組輸入數據分為三行,第一行有兩個數字n,m(0<n,m<10000),分別表示集合A和集合B的元素個數.后兩行分別表示集合A和集合B.每一個元素為不超出int范圍的整數,每一個元素之間有一個…

Google API:如何訪問Google Analytics(分析)數據?

在深入研究Google Analytics&#xff08;分析&#xff09;API之前&#xff0c;了解一些Google Analytics&#xff08;分析&#xff09;術語及其關系總是很有用的。 Google帳戶&#xff1a;要訪問Google Analytics&#xff08;分析&#xff09;&#xff0c;用戶將需要一個Google…

為什么linux的新得立軟件下載,linux,debian_蝶變(Debian)_Xfce_新立得軟件管理_安裝不上軟件了,怎么處理?,linux,debian - phpStudy...

蝶變(Debian)_Xfce_新立得軟件管理_安裝不上軟件了,怎么處理&#xff1f;(synaptic:9573): GLib-CRITICAL **: g_child_watch_add_full: assertion pid > 0 failed正在預設定軟件包 ...(正在讀取數據庫 ... 系統當前共安裝有 343467 個文件和目錄。)正準備解包 .../libc6-db…

設計模式學習筆記(十六:橋接模式)

1.1概述 將抽象部分與它的實現部分分離&#xff0c;使他們都可以獨立地變化。這就是橋接模式的定義。 抽象類或接口中可以定義若干個抽象方法&#xff0c;習慣上將抽象方法稱作操作。抽象類或接口使程序的設計者忽略操作的細節&#xff0c;即不必考慮這些操作是如何實現的&…

Request的getParameter和getAttribute方法的差別

HttpServletRequest.getParameter("modelName");能取到想要的modelObject嗎&#xff1f;經過測試之后。發現是不能的。后來想想。其它道理挺簡單的&#xff0c;當兩個Web組件之間為轉發關系時&#xff0c;轉發源會將要共享request范圍內的數據先用setAttribute將數據…

Spring Social入門–第2部分

幾周前&#xff0c;我寫了一篇文章&#xff0c;展示了我認為可以使用Spring Social編寫的最簡單的應用程序。 該應用程序讀取并顯示了Twitter用戶的公共數據&#xff0c;并被編寫為Spring Social和社交編碼領域的介紹。 但是&#xff0c;讓您的應用程序顯示用戶的公共數據只是故…

linux靜默刪除文件夾,Linux常用命令10 - unzip

zip 是最廣泛使用的歸檔文件, 除了linux&#xff0c;windows也是非常的廣泛。&#xff0c;支持無損數據壓縮。 zip 文件是包含一個或多個壓縮文件或目錄的數據容器。接下來&#xff0c;我將解釋如何使用 unzip 命令通過命令行解壓縮 Linux 系統中的文件。 還有與之對應就是 zip…

Git學習筆記(一) 安裝及版本庫介紹

安裝Git 最早Git是在Linux上開發的&#xff0c;很長一段時間內&#xff0c;Git也只能在Linux和Unix系統上跑。不過&#xff0c;慢慢地有人把它移植到了Windows上。現在&#xff0c;Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。 在Linux上安裝Git 首先&#xff…

python基礎:迭代器、生成器(yield)詳細解讀

1. 迭代器 迭代器是訪問集合元素的一種方式。迭代器對象從集合的第一個元素開始訪問&#xff0c;知道所有的元素被訪問完結束。迭代器只能往前不會后退&#xff0c;不過這也沒什么&#xff0c;因為人們很少在迭代途中往后退。 1.1 使用迭代器的優點 對于原生支持隨機訪問的數據…

LazyInitializationException的四種解決方案–第2部分

本文從教程??的第1部分繼續。 使用PersistenceContextType.EXTENDED的有狀態EJB加載收集 該方法只能應用于與Full JEE環境兼容的應用程序&#xff1a;將EJB與PersistenceContextType.EXTENDED一起使用。 檢查下面的代碼&#xff0c;DAO的樣子&#xff1a; package com.ejb…

Linux將硬盤轉化為pv,Linux擴展硬盤 物理卷(PV) 卷組(VG) 邏輯卷(LV)

1、給虛擬機添加兩塊新的sata虛擬硬盤&#xff0c;容量8G和10G# fdisk -l 命令2、分別在這兩個硬盤上建立pvPvcreate /dev/sdb 創建一個物理卷/dev/sdb 磁盤名是 fdisk -l 查詢出來的Pvscan 查看當前所有物理卷Pvdisplay 查看當前所有物理卷的詳情3、創建VG&#xff0c;使得…

ubuntu 16.10 shu rufa meiy ou l e geng xi zhi hou

轉載于:https://www.cnblogs.com/ganmk--jy/p/6035894.html

ZOJ Monthly, November 2012

A.ZOJ 3666 Alice and Bob 組合博弈&#xff0c;SG函數應用#include<vector> #include<cstdio> #include<cstring> #include<algorithm>using namespace std;const int maxn 10000 100; int SG[maxn]; vector<int> g[maxn];int mex(int u) { /…

使用Aspect和Spring Profile進行電子郵件過濾

在Web應用程序開發期間&#xff0c;經常需要發送電子郵件。 但是&#xff0c;有時數據庫中會包含來自生產的數據&#xff0c;并且存在在電子郵件測試執行期間向真實客戶發送電子郵件的風險。 這篇文章將解釋如何避免在沒有在發送電子郵件功能中明確編寫代碼的情況下避免這種情…

紅旗linux 進不去圖形界面,進不了紅旗Linux6.0的圖形界面請高手幫忙

習生 于 2008-11-02 11:08:42發表:引用:原帖由 zhaoruiqi 于 2008-11-2 10:03 發表 我的也是進不了圖形界面&#xff0c;用文本安裝后進系統也一樣正常按rtl的方法對xorg.conf進行修改,已經能進入圖形界面。你看看樓上rtl的回復的能否對你有幫助。zhaoruiqi 于 2008-11-02 10:0…

總結繼承的幾種方式

簡單總結繼承的幾種方式 JavaScript作為一門弱類型的語言&#xff0c;本著精簡的原則&#xff0c;它取消了類的概念&#xff0c;只有對象的概念&#xff0c; 更是有萬物皆對象的說法。在基于類的面向對象方式中&#xff0c;對象&#xff08;object&#xff09;依靠類&#xff0…

Oracle SQL精妙SQL語句講解(二)

- 如果存在就更新&#xff0c;不存在就插入用一個語句實現 DROP TABLE t_mg; CREATE TABLE t_mg(code VARCHAR2(10), NAME VARCHAR2(10)); SELECT * FROM t_mg; MERGE INTO t_mg a USING (SELECT the code code, the name NAME FROM dual) b ON (a.code b.code) WHEN M…

Spring Security –在一個應用程序中有兩個安全領域

這篇博客文章主要是關于Spring Security配置的。 更具體地說&#xff0c;它打算顯示如何在一個Web應用程序中配置兩個不同的安全領域。 第一安全領域是針對瀏覽器客戶端的。 它使我們能夠在登錄頁面中登錄并訪問受保護的資源。 第二安全領域旨在處理來自android應用程序的REST…