鍍金池/ 教程/ 物聯(lián)網(wǎng)/ 測試Java應(yīng)用
依賴管理實戰(zhàn)
配置遠(yuǎn)程倉庫
安裝Gradle
簡介
項目自動化簡介
配置子項目
Gradle強大的特性
自動化測試
簡介
掌握構(gòu)建生命周期
使用命令行操作
構(gòu)建Java項目
管理任務(wù)
構(gòu)建工具
連續(xù)傳遞的特性
用Gradle開發(fā)Web項目
聲明依賴
構(gòu)建塊
簡介
測試Java應(yīng)用
java構(gòu)建工具
為什么選擇Gradle
拆分項目文件
單元測試
多項目打包
Gradle 起步
介紹這個Gradle項目
簡介
自定義腳本
Gradle包裝器
簡要概述依賴管理
項目模塊化

測試Java應(yīng)用

一些開源的測試框架比如JUnit,TestNG能夠幫助你編寫可復(fù)用的結(jié)構(gòu)化的測試,為了運行這些測試,你要先編譯它們,就像編譯源代碼一樣。測試代碼的作用僅僅用于測試的情況,你可不想把你的測試代碼發(fā)布到生產(chǎn)環(huán)境中,把源代碼和測試代碼混在一起可不是個好主意。通常你會把源代碼和測試代碼分開來,比如Gradle的標(biāo)準(zhǔn)項目布局src/main/java和src/test/java。

項目布局

在前面我們講到默認(rèn)的項目布局,源代碼是src/main/java,資源文件是在src/main/resources,測試源代碼路徑也是這樣,你把測試代碼放在src/test/java,資源文件放在src/test/resources,編譯之后測試的class文件在build/classes/test下。

所有的測試框架都會生成至少一個文件用來說明測試執(zhí)行的結(jié)果,最普遍的格式就是XML格式,你可以在build/test-results路徑下找到這些文件,XML文件的可讀性比較差,許多測試框架都允許把測試結(jié)果轉(zhuǎn)換成報告,比如JUnit可以生成HTML格式的報告,Gradle把測試報告放在build/reports/test。下圖清晰的顯示了項目的布局:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag51.png" alt="" />

上面講了這么多測試框架,Gradle怎么知道你想使用哪一個呢?你需要聲明對外部庫的依賴。

測試配置

Java插件引入了兩個配置來聲明測試代碼的編譯期和運行期依賴:testCompile和testRuntime,我們來看一下怎么聲明一個對JUnit框架的編譯期依賴:

    dependencies {
        testCompile 'junit:junit:4.11'
    }

另外一個配置testRuntime用來聲明那些編譯期用不著但是在運行期需要的依賴,記住用于測試的依賴不會影響你源代碼的classpath,換句話說他們不會用在編譯或打包過程。然而,對于處理依賴來講測試配置繼承了源代碼相關(guān)配置,比如testCompile繼承了compile配置的依賴,testRuntime繼承了runtime和testCompile和他們的父類,他們父類的依賴會自動傳遞到testCompile或testRuntime中。如下圖所示:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag52.png" alt="" />

測試任務(wù)

在之前的任務(wù)我們可能注意到任務(wù)圖一直有四個任務(wù)是up-to-date的然后被跳過了,這是因為你沒有編寫任何測試代碼Gradle就不需要編譯或執(zhí)行。下圖顯示了這四個任務(wù)在任務(wù)圖中的位置:

http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag53.png" alt="" />

從圖中可以看到測試編譯和測試執(zhí)行階段是在源代碼被編譯和打包之后的,如果你想避免執(zhí)行測試階段你可以在命令行執(zhí)行g(shù)radle jar或者讓你的任務(wù)依賴jar任務(wù)。

自動測試檢查

對于build/classes/test目錄下的所有編譯的測試類,Gradle怎么知道要執(zhí)行哪一個呢?答案就是所有匹配下面幾條描述的都會被檢查:

  • 任何繼承自junit.framework.TestCase 或groovy.util.GroovyTestCase的類
  • 任何被@RunWith注解的子類
  • 任何至少包含一個被@Test注解的類

如果沒有找到符合條件的,測試就不會執(zhí)行,接下來我們會使用不同框架來編寫單元測試。

上一篇:簡介下一篇:簡介