如果Gradle構建的專案是一個web專案的話,裡面可能包含一些整合測試和功能性測試。這些測試和單元測試不同之處是在執行之前要先在本地將web服務啟動起來,並且跑完測試後能夠自動的關閉web服務。
在本地啟動web服務我們可以使用Gradle內建的jetty外掛。jetty是一個輕量級的web容器,其執行速度快,配置簡單,遠端除錯方便。啟用jetty只需在build.gradle中加入對這個外掛的引用。
1
|
|
之後可以配置war包的名稱,啟動的埠等屬性。
1 2 3 4 5 6 |
|
我們需要將整合測試與一般的單元測試分開。因為單元測試並不需要事先啟動web服務,保證其執行速度快,能夠得到更快的反饋。一般做法是單元測試字尾名為Test.java,整合測試字尾名為IntegrationTest.java。
配置單元測試執行的測試集合。
1 2 3 4 |
|
然後新建一個Task,用於執行整合測試。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
上述程式碼首先是建立一個名為intTest的task,其型別為Test,依賴於test task。該整合測試只會執行字尾名為IntegrationTest的測試類。在執行測試之前,首先採用後臺模式啟動jetty伺服器,執行完測試後再呼叫jettyStop task停止jetty服務。
為了使我們在執行gradle build
時也會執行intTest task,可以新增對intTest的依賴。
1
|
|
這樣在執行gradle build
時也會執行整合測試。並且在整合測試前後web服務會自動的啟動和關閉。