測試是每個項目必不可少的一步,每一款軟件都需要測試通過才能上線合是。由于測試的必需性了罪,所以有了一些測試框架的面世,比如 Junit聪全,TestNG 等泊藕,能夠幫我們編寫可復(fù)用的結(jié)構(gòu)化測試,運行這些測試都需要先編譯难礼。測試代碼只在測試環(huán)境下使用娃圆,不應(yīng)該發(fā)布到生產(chǎn)環(huán)境中,一般把源代碼和測試代碼分開蛾茉。對于所有項目就應(yīng)該存在的測試讼呢,Gradle 又為咱們提供了什么不一樣的操作呢?
Gradle 自動化測試
對于每個項目都應(yīng)該存在的測試谦炬,Gradle 幫我們做了自動化的測試吝岭。何為自動化測試,就是 Gradle 默認(rèn)自動幫我們執(zhí)行測試代碼。接下來我們就來看下如何個自動化法窜管?對我們開發(fā)過程又有哪些變化以及需注意的事項散劫?
書寫代碼實踐驗證
- 創(chuàng)建 Gradle 的 Java 項目,idea 自動引入 JUnit 測試框架
- 創(chuàng)建測試類 MyTest 和測試方法 test1
- 執(zhí)行 build 構(gòu)建項目
執(zhí)行build 后發(fā)現(xiàn) D 盤創(chuàng)建了一個文件 test.txt幕帆,說明在構(gòu)建項目時就已經(jīng)執(zhí)行了測試方法test1获搏。
項目布局如下:
測試成功會有測試報告,打開build -> reports -> tests -> test -> index.html 如下:
測試代碼有異常則構(gòu)建失斒:
再看下執(zhí)行后控制臺的輸出:
由此可得知自動化測試的完整流程圖如下:
藍(lán)色為源代碼的編譯到執(zhí)行常熙,綠色的為測試代碼的編譯到執(zhí)行。
測試代碼只需按JUnit 的規(guī)范來寫就 OK 了碱茁,Gradle 在構(gòu)建項目時就會自動的幫我們執(zhí)行測試代碼裸卫。
Gradle 怎么知道哪些是測試代碼,是按什么規(guī)則來評判的呢纽竣?
我們來看下 Gradle 執(zhí)行測試代碼的評判規(guī)則墓贿。
Gradle 測試代碼評判規(guī)則
- 類或超類繼承自 junit.framework.TestCase 的類
- 類或超類繼承自 groovy.util.GroovyTestCase 的類
- 類或超類使用了 @RunWith 進(jìn)行注解
- 類或超類含有一個帶 @Test 注解的方法
只要滿足以上條件之一的代碼,Gradle 在 build 時會自動執(zhí)行測試代碼蜓氨。
注意:Gradle 只有在測試代碼新建或修改后執(zhí)行 build 才會執(zhí)行測試代碼聋袋。
如果只需手動執(zhí)行測試代碼,不想在 build 項目時就執(zhí)行測試代碼怎么辦穴吹?(一般做法)
構(gòu)建的選擇
- 項目構(gòu)建命令
- 正常操作:gradle build
- 指定執(zhí)行測試:gradle test --tests *SomeSpecificTestClassNameOrTestMethodName
- 工具構(gòu)建項目
- 正常操作:執(zhí)行 build
- 不執(zhí)行測試:執(zhí)行 assemble 做編譯
- build.gradle 配置測試過濾
test {
filter{
//包含任意測試類中方法名包含 test 的方法
includeTestsMatching "*test*"
//包含指定包下的測試類
includeTestsMatching "cn.wolfcode.test.*"
//包括所有的集成測試
includeTestsMatching "*IntegTest"
// 排除指定的測試類/方法/包 Gradle 5.0 開始支持
//excludeTestsMatching "*test"
}
}
至此幽勒,Gradle 的自動化介紹就結(jié)束了,接下總結(jié)回顧下港令。
Gradle 自動化測試要點
- 按測試框架書寫測試代碼即可
- Gradle 在 build 項目時自動執(zhí)行測試代碼
- Gradle 只會自動執(zhí)行新建或修改過的滿足規(guī)則的測試代碼
- 執(zhí)行完成測試會生成測試報告html和xml版本
- 構(gòu)建項目時不自動執(zhí)行測試代碼如何操作
轉(zhuǎn)載鏈接:http://www.reibang.com/p/76179c0c6be5