用于集成測試的Maven Cargo插件

在項目生命周期中,非常普遍的需求是設置集成測試。

幸運的是,Maven具有針對此確切方案的內置支持,具有默認構建生命周期的以下階段(來自Maven 文檔 ):

  • 集成前測試執行集成測試之前所需的操作。 這可能涉及諸如設置所需環境的事情。
  • 集成測試如有必要,將程序包處理并部署到可以運行集成測試的環境中。
  • 集成測試后執行集成測試后執行所需的操作。 這可能包括清理環境。

首先,配置了maven-surefire-plugin ,以便從標準構建生命周期中排除集成測試

<plugin><groupId>org.apache.maven.plugins<groupId><artifactId>maven-surefire-plugin<artifactId><version>2.10<version><configuration><excludes><exclude>***IntegrationTest.java<exclude><excludes><configuration><plugin>

排除是通過螞蟻風格的路徑表達式完成的,因此所有集成測試都必須遵循此模式,并以“ IntegrationTest.java ”結尾。

接下來,使用cargo-maven2-plugin ,因為Cargo提供了對嵌入式Web服務器的頂級支持。 當然,如果服務器環境需要特定的配置,貨運也知道如何從已歸檔的軟件包中構造服務器以及如何部署到外部服務器。

<plugin><groupId>org.codehaus.cargo<groupId><artifactId>cargo-maven2-plugin<artifactId><version>1.1.3<version><configuration><wait>true<wait><container><containerId>jetty7x<containerId><type>embedded<type><container><configuration><properties><cargo.servlet.port>8080<cargo.servlet.port><properties><configuration><configuration><plugin>

定義了一個嵌入式Jetty 7 Web服務器,偵聽端口8080。請注意,將等待標記設置為true –這是因為對于較新版本的貨物(1.1.0以上),該標記的默認值已更改為由于此錯誤 ,從truefalse 。 我們希望能夠通過簡單地運行mvn cargo:start來啟動項目,尤其是在開發階段,因此該標志應該處于活動狀態。 但是,在運行集成測試時,我們希望服務器啟動,先運行測試再停止,這就是為什么該標志以后會被覆蓋的原因。

為了使 maven階段生成可部署的war文件,項目的打包必須為: <packaging> war </ packaging>

接下來, 創建一個新的集成 Maven配置文件 ,以在該配置文件處于活動狀態時才允許運行集成測試,而不是將其作為標準構建生命周期的一部分。

<profiles><profile><id>integration<id><build><plugins>...<plugins><build><profile><profiles>

該配置文件將包含所有其余配置。

現在,Jetty服務器已配置為在集成前測試階段啟動 ,并在集成后 測試階段停止

<plugin><groupId>org.codehaus.cargo<groupId><artifactId>cargo-maven2-plugin<artifactId><configuration><wait>false<wait><configuration><executions><execution><id>start-server<id><phase>pre-integration-test<phase><goals><goal>start<goal><goals><execution><execution><id>stop-server<id><phase>post-integration-test<phase><goals><goal>stop<goal><goals><execution><executions><plugin>

這樣可以確保在集成測試階段之前和之后執行cargo:start目標和cargo:stop目標。 請注意,因為有兩個單獨的執行定義,所以兩個中都必須存在id元素(并且元素ID有所不同),以便Maven可以接受配置。

接下來,需要在集成配置文件中覆蓋maven-surefire-plugin配置,以便現在將包含并運行默認生命周期中排除的集成測試:

<plugins><plugin><groupId>org.apache.maven.plugins<groupId><artifactId>maven-surefire-plugin<artifactId><executions><execution><phase>integration-test<phase><goals><goal>test<goal><goals><configuration><excludes><exclude>none<exclude><excludes><includes><include>***IntegrationTest.java<include><includes><configuration><execution><executions><plugin><plugins>

有幾件事值得注意:

1. maven-surefire-plugin測試目標是在集成測試階段執行的; 至此,Jetty已經開始部署項目,因此集成測試應該沒有問題。

2.現在,集成測試包含在執行中。 為了實現這一點,排除項也被覆蓋-這是因為Maven處理配置文件中的覆蓋插件配置的方式。 基本配置沒有被完全覆蓋,而是在配置文件中增加了新的配置元素。 因此,最初排除集成測試的原始<excludes>配置仍然存在于配置文件中,并且需要被覆蓋,否則它將與<includes>配置沖突并且測試仍然不會跑。

3.請注意,由于只有一個<execution>元素,因此不需要定義id

現在,整個過程可以運行:

mvn clean install -Pintegration

結論

Maven的分步配置涵蓋了設置集成過程的整個過程,這是項目生命周期的一部分。

通常將此設置為在持續集成環境中運行,最好在每次提交之后運行。 如果CI服務器已經具有運行和使用端口的服務器,則貨物配置將必須處理該情況,我將在以后的文章中介紹。

參考: 如何在baeldung博客上使用我們的JCG合作伙伴 Eugen Paraschiv 的Maven Cargo插件設置集成測試 。


翻譯自: https://www.javacodegeeks.com/2012/09/maven-cargo-plugin-for-integration.html

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

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

相關文章

jquery-文檔操作

1.text() 設置或返回元素的text值 <div id"divname">old text</div> $(#divname).text("new text"); 將改變顯示的old為new [1] 參考w3scholl文檔操作 轉載于:https://www.cnblogs.com/hellokittyblog/p/9128397.html

bzoj 4259: 殘缺的字符串

這題好神啊&#xff0c;居然是fft&#xff0c;表示一直在往數據結構上想。 把*當成0&#xff0c;那么兩個串可以匹配當且僅當$$\sum (a[i]-b[i])^2\times a[i]\times b[i]0$$ 我們可以把平方拆開&#xff0c;然后就變成了幾個乘積相加的形式&#xff0c;那就大力翻轉一個串然后…

錄屏時計算機休眠,硬盤錄像機里硬盤提示休眠,什么意思?

休眠&#xff0c;電腦內存中的數據寫入硬盤&#xff0c;關閉電腦。重新啟動的時候重新將數據加載到內存中&#xff0c;恢復休眠前狀態。睡眠&#xff0c;和休眠一個意思&#xff0c;98系統下叫睡眠。xp系統叫休眠。98系統睡眠時&#xff0c;內存數據寫入虛擬內存&#xff0c;xp…

MySQL數據庫的基本操作

-- 連接mysql 數據庫(前提是配置好MySQL數據庫的環境變量&#xff0c;加入path)mysql -uroot -p -- 設置文本的輸入輸出編碼&#xff1a;cmd 使用的是gbk&#xff0c;不然顯示亂碼set names gbk; -- 創建數據庫create database mydatabase charset utf8; -- 創建用戶 user001cr…

使用NoSQL實施實體服務–第5部分:使用云提高自治性

在先前的文章中&#xff0c;我討論了如何通過結合使用Java Web Services &#xff0c; Java EE和CouchDB NoSQL數據庫為產品構建SOA“實體”服務。 在本系列的最后一篇文章中&#xff0c;我將利用我已經創建的一些技術資產&#xff0c;并使用一些流行的SOA模式實現一些新的用戶…

樂高計算機發展史教程,【樂高產品發展史特別篇】樂高恐龍發展史

—— 寫在前面 ——2018年6月22日&#xff0c;《侏羅紀世界2&#xff1a;失落王國》全球上映&#xff1b;4月16日&#xff0c;樂高同名系列套裝全球發售。恐龍是一個伴隨了樂高產品二十余年的主題&#xff0c;其實在一年以前就有這樣一個計劃完成樂高恐龍發展史的相關內容&…

mvc 連接數據庫但單復值得問題

1. The model backing the ‘MusicStoreDBContext‘ context has changed since the database was created. Consider using Code First Migrations to update the database Movie這個表是用來記錄Model的版本號的&#xff0c;你每次重新生成一次數據庫它就會重新給ModelHash…

Mybatis處理表關聯(懶加載)

1.關系型數據庫&#xff1f; 數據庫中的表對象之間是有關系的。 一對一&#xff0c;一對多&#xff0c;多對多。 ORM映射。數據庫表映射到實體對象。 實體與實體之間是有關系的。 一對多的關系。 比如商品分類表與商品表之間的關系&#xff0c;就是一對多的關系。 入庫主表與入…

Spring–設計領域模型和服務層

我們將為時間表管理構建應用程序。 因此&#xff0c;讓我們首先考慮一些用例和實體。 讓我用幾個項目符號寫它們&#xff1a; 任務由經理分配給員工。 一項任務可以分配給許多員工。 員工將他在某些任務上工作的小時數填滿至系統。 經理/員工查看時間表上的報告&#xff08;時…

如何把很多照片拼成一張照片_一張現場照片引發的中韓之爭

來源&#xff1a;渤海新水手聊船專欄前幾天&#xff0c;微信群里(造船質量技術高級交流群)一位網友發了一張韓國船廠的現場照片&#xff0c;沒想到瞬間引發全群幾十位網友的熱烈討論&#xff0c;中韓之爭就此上演&#xff01;照片反映出的是國內船廠很難做到的部分——分段預裝…

計算機文檔設置,電腦這樣設置快速的共享文件、分享文檔!

原標題&#xff1a;電腦這樣設置快速的共享文件、分享文檔&#xff01;在日常辦公的時候&#xff0c;有時需要共同使用一些文件或者文檔或者一些視頻資料。那么要怎么方便的使用這些共同的資源呢&#xff1f;當然這時大家可能會說可以用QQ、微信傳給對方不就可以了。但是如果文…

關于vue 框架與后臺框架的混合使用的嘗試

這幾天我在研究前臺框架和后臺框架融合的問題,進行了一些嘗試; 我前臺選擇的是 vue,當然也可以選擇 react 等其他 mvvm 框架,不過 vue 對于我來說是最熟悉的; 后臺話,我選擇的是 php 的 lumen 框架,他是laravel 的簡化版,因為比較輕量,所以這也是我的選擇; 先說下我這邊的環境:…

GitHub上整理的一些工具

GitHub上整理的一些工具 GitHub 2015-11-19 10:10:47 發布您的評價: 0.0 收藏 5收藏技術站點 Hacker News&#xff1a;非常棒的針對編程的鏈接聚合網站Programming reddit&#xff1a;同上MSDN&#xff1a;微軟相關的官方技術集中地&#xff0c;主要是文檔類infoq&#x…

服務器 raid 1t硬盤嗎,用了4塊1T的硬盤,做了raid5,顯示有2.7T,但是分區做完系統后,有700多G不能動...

滿意答案ouourpt892013.11.14采納率&#xff1a;46% 等級&#xff1a;12已幫助&#xff1a;13583人出現這種情況是由于創建的硬盤使用的是基本磁盤(MBR)格式&#xff0c;因受MBR磁盤格式技術的限制&#xff0c;MBR磁盤只支持2TB的磁盤容量&#xff0c;所以出現了你所說的情況…

如何編寫更好的POJO服務

在Java中&#xff0c;您可以輕松地在Plain Old Java Object&#xff08;POJO&#xff09;類中實現一些業務邏輯&#xff0c;并且可以在高級服務器或框架中輕松運行它們。 有許多服務器/框架&#xff0c;例如JBossAS&#xff0c;Spring或Camel等&#xff0c;它們使您可以部署POJ…

mongo 唯一約束索引_快速掌握mongoDB(三)——mongoDB的索引詳解

1 mongoDB索引的管理本節介紹mongoDB中的索引&#xff0c;熟悉mysql/sqlserver等關系型數據庫的小伙伴應該都知道索引對優化數據查詢的重要性。我們先簡單了解一下索引&#xff1a;索引的本質就是一個排序的列表&#xff0c;在這個列表中存儲著索引的值和包含這個值的數據(數據…

HBase MapReduce

1. HBase to HBase Mapper 繼承 TableMapper&#xff0c;輸入為Rowkey和Result. public abstract class TableMapper<KEYOUT, VALUEOUT> extends Mapper<ImmutableBytesWritable, Result, KEYOUT, VALUEOUT> { public TableMapper() { }} package com.scb.ja…

第六期的知識點

1.volatile詳解 在應用程序中&#xff0c;volatile主要是被設計用來修飾被不同線程訪問和修改的變量 .volatile的本意是“易變的” 因為訪問寄存器要比訪問內存單元快的多,所以編譯器一般都會作減少存取內存的優化&#xff0c;但有可能會讀臟數據。當要求使用volatile聲明變量值…

在DelayQueue中更改延遲,從而更改順序

因此&#xff0c;我正在研究構建一個簡單的對象緩存&#xff0c;該緩存在給定時間后會使對象過期。 顯而易見的機制是使用Java并發包中的DelayedQueue類。 但我想知道是否有可能在將對象添加到隊列后更新延遲。 看一下Delayed接口&#xff0c;似乎沒有充分的理由不在文檔中&…

vi編輯器服務器維護,vi編輯器有哪幾種工作模式及如何轉換_網站服務器運行維護,vi編輯器,工作模式...

整理分享一些 Linux思維導圖(值得收藏)_網站服務器運行維護本篇文章整理分享了一些 Linux思維導圖(值得收藏)。有一定的參考價值&#xff0c;有需要的朋友可以參考一下&#xff0c;希望對大家有所幫助。vi編輯器有三種基本的工作模式&#xff0c;分別是&#xff1a;指令行模式、…