TestNG和Maven配置指南

為了有用,自動測試應該運行得非常快。 否則,將不會在開發期間經常運行,甚至在開發人員工作站的默認配置中將被忽略。 最簡單的規則是僅編寫小型單元測試,該測試將模擬給定類的鄰居。 但是,有時在IoC容器上下文(Spring,CDI,Guice)或使用嵌入式數據庫(H2,HyperSQL,Derby)中測試某些東西很有用/必需。 不幸的是,即使是這種類型的測試,也可能顯著增加總體測試執行時間。 我在一個項目中遇到這種情況,并且為了避免使用skipTests標志,我使用了TestNG和Maven Surefire插件中的組開發了一種解決方案。

測試分為三組:

  • 非常快速的真實單元測試(默認情況下全部為)–在開發過程中應經常運行(通過IDE或通過mvn測試,mvn軟件包)
  • 集成速度較慢,但??自給自足的測試(設置Spring上下文和/或使用嵌入式H2數據庫)–至少應在提交/推送之前或在給定部件上運行時運行(通過IDE或通過mvn集成測試,mvn安裝)
  • 真正的集成測試(要求訪問遠程服務器,例如測試Web服務或REST)應每天由CI服務器或從事集成工作的開發人員運行(mvn安裝,mvn集成測試并啟用其他配置文件)

為了實現給定的測試(或測試類),必須將其標記為“自集成”或“集成”(在方法或類級別):

@Test(groups = "self-integration")
public void shouldInitializeChainedAppInfoProperly() {
@Test(groups = "integration")
public class FancyWebServiceIntegrationTest {

Maven Surefire插件應配置為從默認執行中排除“自集成”和“集成”測試組,并在“集成測試階段”添加“自集成”:

<build><plugins>(...)<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${ver.surefire-plugin}</version><executions><execution><id>default-test</id> <!-- to override default configuration - in fact: unit tests --><configuration><excludedGroups>self-integration,integration</excludedGroups></configuration></execution><execution><id>self-integration</id><phase>integration-test</phase><goals><goal>test</goal></goals><configuration><groups>self-integration</groups><reportsDirectory>target/self-integration-surefire-reports/</reportsDirectory></configuration></execution></executions></plugin></plugins></build>

另外(如果需要),可以創建在“集成測試”階段配置的帶有“集成”測試組的單獨的單獨配置文件。

<profiles>(...)<profile><id>integration</id><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${ver.surefire-plugin}</version><executions><execution><id>integration</id><phase>integration-test</phase><goals><goal>test</goal></goals><configuration><groups>integration</groups><reportsDirectory>target/integration-surefire-reports/</reportsDirectory></configuration></execution></executions></plugin></plugins></build></profile></profiles>

可以在AppInfo的人工分支(pom.xml和示例測試類)中找到工作示例。 根據您的需求很容易采用它。

三個測試組都有各自獨立的報告格式,以免彼此覆蓋。 作為擴展,可能可以將它們合并到一個匯總的測試報告中。

參考: 跑得快單元測試的時候,慢整合很少- TestNG的和Maven配置指南從我們JCG伙伴馬爾欽Zajaczkowski在固態軟博客。


翻譯自: https://www.javacodegeeks.com/2012/04/testng-and-maven-configuration-guide.html

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

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

相關文章

微型計算機廣告牌實驗報告,微型計算機實驗報告1資料.doc

實驗報告1. 實驗名稱程序編譯及調試2. 實驗目的掌握匯編語言語句格式&#xff0c;程序結構&#xff0c;上機調試步驟和各種類型程序的設計方法。了解匯編語言的基本語法&#xff0c;匯編程序的功能和匯編&#xff0c;調試過程&#xff0c;偽指令&#xff0c;匯編語言程序設計&a…

mybatis入門-新手注意問題

參數問題 在映射文件中通過parameterType指定輸入參數的類型&#xff1b;在映射文件中通過resultType指定輸出結果的類型。 占位符和拼接符問題 #{}表示一個占位符號&#xff0c;#{}接收輸入參數&#xff0c;類型可以是簡單類型&#xff0c;pojo、hashmap。 如果接收簡單類型&a…

python文件管理包_Python標準庫04 文件管理 (部分os包,shutil包)

Python標準庫04 文件管理 (部分os包&#xff0c;shutil包)在操作系統下&#xff0c;用戶可以通過操作系統的命令來管理文件&#xff0c;參考。Python 標準庫則允許我們從 Python 內部管理文件。相同的目的&#xff0c;我們有了兩條途徑。盡管在 Python 調用標準庫的方式不如操作…

Delphi Berlin 10.1 for iOS 成生 info.plist 順序改變了

在 Delphi Seattle 10 update 1 版本&#xff08;含之前版本&#xff09;&#xff0c;只要 Project > Build 會立即生成 info.plist 如果需要修改 info.plist 可以利用 TMS 提供的修改工具 Fixing on iOS 9 來修改。 在 Delphi Berlin 10.1 版本&#xff0c;順序改變了&…

MANIFEST.MF和feature.xml版本控制規則

我永遠忘記了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依賴項聲明的規則是什么。 谷歌搜索經常導致沮喪而不是答案。 所以&#xff0c;因為今天我實際上找到了這些規則的簡要列表&#xff0c;所以我想在這里重新發布它們&#xff0c;并進行一些小的修改以幫助闡明。 OSGi…

遠程桌面連接時無法訪問遠程計算機的計算機屬性提示系統調用失敗,遠程過程調用失敗【應對技巧】...

喜歡使用電腦的小伙伴們一般都會遇到win7系統遠程過程調用失敗的問題&#xff0c;突然遇到win7系統遠程過程調用失敗的問題就不知道該怎么辦了&#xff0c;其實win7系統遠程過程調用失敗的解決方法非常簡單&#xff0c;按照1&#xff1a;第一步我們可以看到sql server數據庫出現…

MVC View顯示詳解(RenderBody,RenderPage,RenderSection,Partial)

一、Views文件夾 -> Shared文件夾下的 _Layout.cshtml 母版頁 RenderBody 當創建基于_Layout.cshtml布局頁面的視圖時&#xff0c;視圖的內容會和布局頁面合并&#xff0c;而新創建視圖的內容會通過_Layout.cshtml布局頁面的RenderBody()方法呈現在標簽之間。 RenderPage從…

如何在Windows系統下安裝多個Redis實例

如何在Windows系統下安裝多個Redis實例 轉載于:https://www.cnblogs.com/xiaohui1990/p/5505944.html

注冊表中shell文件不見了_win7系統注冊表中的shell文件不小心被刪除的解決方法...

我們在操作電腦的時候,win7系統注冊表中的shell文件不小心被刪除的問題對于我們來說其實是比較少見的&#xff0c;一般情況下的正常使用都不會遇到win7系統注冊表中的shell文件不小心被刪除的狀況。但在win7系統中如果由于我們個人的不當操作導致win7系統注冊表中的shell文件不…

庫卡機器人C4計算機無法啟動,KUKA-C4標準版機器人啟動時序

描述1.T1模式下選擇CELL程序&#xff0c;手動執行程序&#xff0c;注意中間路徑&#xff0c;有時機器人不在HOME點附近&#xff0c;回原點的過程中需慢速運行&#xff0c;直至到達BCO。2.松開執行鍵&#xff0c;重新按下&#xff0c;信息欄出現“運行方式錯誤”提示&#xff0c…

ADF:將UI類別與動態表單一起使用

JDev 11g R2具有有趣的新功能“ UI類別”。 它使我們可以在視圖對象定義級別上以聲明方式對VO的屬性進行分組。 例如&#xff0c;我的VEmployees視圖對象的“ UI Categories”選項卡如下所示&#xff1a; 默認情況下&#xff0c;每個視圖對象都有一個預定義的類別“默認”。 我…

Exchange超級實用命令行

發現Powershell很強大以后&#xff0c;就欲罷不能了。來點干貨 有PST文件的沒有成功導出&#xff0c;原因是執行時會報錯&#xff0c;說需要64位Outlook&#xff0c;dotnet4.5以上環境。還有說法是Exchange2010開始不支持PST導入導出。 整理了一下最近嘗試比較實用的命令&#…

位數不足前面補0mysql語句_全網熱議:監控補光燈爆亮閃瞎眼!你遇到過嗎?

唔知大家有無咁ga體會每當夜晚揸車經過一排監控補光燈瞬間像“瞎子”那樣看不到東西&#xff0c;“威力”堪比遠光燈(△ 11月12日晚&#xff0c;安定門外大街&#xff0c;主路上的監控補光燈)近日&#xff0c;“監控補光燈太刺眼&#xff0c;給夜間行車安全造成極大隱患”一事引…

4種常見的 PHP 設計模式

工廠模式 在大型系統中&#xff0c;許多代碼依賴于少數幾個關鍵類。需要更改這些類時&#xff0c;可能會出現困難。例如&#xff0c;假設您有一個從文件讀取的 User 類。您希望將其更改為從數據庫讀取的其他類&#xff0c;但是&#xff0c;所有的代碼都引用從文件讀取的原始類。…

三網合一是指計算機網,什么是三站合一網站?什么是三網合一網站?

原標題&#xff1a;什么是三站合一網站&#xff1f;什么是三網合一網站&#xff1f;三站合一網站和三網合一網站是一個概念&#xff0c;都是指PC網站手機網站微信網站1. 什么是電腦網站指針對普通PC電腦上或筆記本的屏幕進行排版設計的網站&#xff0c;只有在普通PC電腦上或筆記…

使用HMAC(Play 2.0)保護REST服務

我們有HTTPS&#xff0c;還需要什么&#xff1f; 當您談論基于REST的API的安全性時&#xff0c;人們通常會指向HTTPS。 借助HTTPS&#xff0c;您可以使用每個人都熟悉的方法輕松保護您的服務免遭窺視。 但是&#xff0c;當您需要更高級別的安全性或HTTPS不可用時&#xff0c;您…

安裝卡主_智能溫室四周玻璃的安裝學問還這么多

智能玻璃溫室大棚是指頂部及四周以玻璃為覆蓋材料的尖頂溫室大棚&#xff0c;玻璃溫室大棚這幾年的流行是由于紋絡型溫室頂部陽光板問題的抗老化方面容易出現問題。因此很多客戶為了種植獲得更高的透光率&#xff0c;更長的使用年限&#xff0c;因而多選擇全玻璃溫室大棚。那么…

String類詳解(1)

首先String是一個類。  1&#xff0c;實例化String類方法。 1&#xff09;直接賦值&#xff1a;String name"haha"; 2)通過關鍵字&#xff1a;String namenew String("haha"); 2&#xff0c;String類的數據比較。 首先回顧一下&#xff0c;基礎數據的比較…

第六章 計算機網絡與i教案,大學計算機基礎教案第6章計算機網絡基礎與應用.docx...

廣東第二師范學院計算機科學系教案課程名稱計算機基礎I課程代碼111012003課程類型公必√□ 專必□ 專選□ 公選□授課方式講授□ 實踐□案例討論□ 上機√□考核方式考試□√ 考查□上機□√ 論文□教學總學時數16學分數1學時分配課堂講授 2 學時&#xff1b;實踐課 14 學時教材…

分享性能優化問題

談談性能優化問題 代碼層面&#xff1a;避免使用css表達式&#xff0c;避免使用高級選擇器&#xff0c;通配選擇器。 緩存利用&#xff1a;緩存Ajax&#xff0c;使用CDN&#xff0c;使用外部js和css文件以便緩存&#xff0c;添加Expires頭&#xff0c;服務端配置Etag&#xff0…