使用Gradle運行集成測試

若是Gradle構建的項目是一個web項目的話,裏面可能包含一些集成測試和功能性測試。這些測試和單元測試不一樣之處是在運行以前要先在本地將web服務啓動起來,而且跑完測試後可以自動的關閉web服務。java

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

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。app

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

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

爲了使咱們在運行gradle build時也會運行intTest task,能夠添加對intTest的依賴。ui

build.gradle
1
build.dependsOn intTest 

這樣在運行gradle build時也會運行集成測試。而且在集成測試先後web服務會自動的啓動和關閉。spa

相關文章
相關標籤/搜索