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