使用Gradle運行集成測試


使用Gradle運行集成測試

如果Gradle構建的項目是一個web項目的話,里面可能包含一些集成測試和功能性測試。這些測試和單元測試不同之處是在運行之前要先在本地將web服務啟動起來,並且跑完測試后能夠自動的關閉web服務。

在本地啟動web服務我們可以使用Gradle內置的jetty插件。jetty是一個輕量級的web容器,其執行速度快,配置簡單,遠程調試方便。啟用jetty只需在build.gradle中加入對這個插件的引用。

build.gradle
1
apply plugin: 'jetty' 

之后可以配置war包的名稱,啟動的端口等屬性。

build.gradle
1
2
3
4
5
6
apply plugin: 'jetty' httpPort = 9876 [jettyRun, jettyRunWar, jettyStop]*.stopPort = 9966 [jettyRun, jettyRunWar, jettyStop]*.stopKey = 'stopKey' 

我們需要將集成測試與一般的單元測試分開。因為單元測試並不需要事先啟動web服務,保證其執行速度快,能夠得到更快的反饋。一般做法是單元測試后綴名為Test.java,集成測試后綴名為IntegrationTest.java。

配置單元測試執行的測試集合。

build.gradle
1
2
3
4
test {  include '**/*Test.class'  exclude '**/*IntegrationTest.class' } 

然后新建一個Task,用於運行集成測試。

build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
task intTest(type: Test, dependsOn: test) {  include '**/*IntegrationTest.class'  doFirst {  jettyRun.daemon = true  jettyRun.execute()  }  doLast {  jettyStop.execute()  } } 

上述代碼首先是創建一個名為intTest的task,其類型為Test,依賴於test task。該集成測試只會運行后綴名為IntegrationTest的測試類。在運行測試之前,首先采用后台模式啟動jetty服務器,運行完測試后再調用jettyStop task停止jetty服務。

為了使我們在運行gradle build時也會運行intTest task,可以添加對intTest的依賴。

build.gradle
1
build.dependsOn intTest 

這樣在運行gradle build時也會運行集成測試。並且在集成測試前后web服務會自動的啟動和關閉。

作者: 黃博文 @無敵北瓜 
出處: http://www.cnblogs.com/huang0925
黃博文的地盤
本文版權歸本人和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
 
分類:  編程開發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM