上一篇單元測試講了如何在Android Studio中寫測試用例,自動化測試并生成測試報告,這一篇主要講一下擴充工具的使用。
jacoco是一個檢測代碼覆寫率的插件工具,那什麼是代碼覆寫率呢?代碼覆寫率簡單來說就是單元測試用例所測試到的代碼比重,被測試到即是被覆寫。覆寫率高自然是好事,但不能完全說明代碼品質高沒有bug,生成的覆寫率報告可能大部分情況下也就是應付差事,應付差事,付差事。。。
在Android Studio中使用jacoco還是比較簡單的,隻需要更改Module目錄下的gradle檔案。首先就是導入jacoco插件并指定使用版本。
指定版本的代碼在AS2.x時代可以寫在android代碼塊中,不過到了3.0之後就不推薦了,可以寫在外面和android、dependencies一個級别。另外需要在buildTypes下的debug(release應該也可以)中添加支援代碼覆寫testCoverageEnable為true。然後就是自定義一個gradle task。
上面的代碼有幾個點需要注意:
注釋1中的type指定了類型,這裡就是jacoco的報告,然後他是依據後面dependsOn的task去生成的;
注釋2是指定了生成的類檔案的目錄,其中exclude是排除以下的檔案,如果有以下源碼不需要進行識别是否覆寫,這裡也就要求了命名的規範性;
注釋3是最重要的一個部分,這裡指向了一個exec檔案,jacoco原理上就是根據這個生成的檔案去生成自己的報告,不過有一點要注意如果一開始dependsOn的是AndroidTest的任務,這個檔案的路徑就不一樣了而且字尾也不一樣,去嘗試一下吧;
注釋4比較顯而易見的就是報告生成的類型,最好還是html。
依然是在AS的指令終端執行gradlew+task的指令模式,gradlew jacocoTestReport之後終端會自動執行自動化測試并生成測試報告和代碼覆寫率報告。代碼覆寫率報告生成的前提是所有的測試用例都通過測試。覆寫率報告的樣子可以參考下圖,紅色代表了沒有覆寫到:
jenkins是一種持續內建工具,可以監控持續重複的工作,如apk的打包生成等。它的環境搭建不是這裡重點說的,網上的例子也很多。用過這個工具的應該也對它支援gradle建構Android apk有所了解,在自動化測試的部分用到它也是用到了它能夠對Android項目自動打包,同時支援插件的擴充。
為了能夠支援單元測試,jenkins需要安裝junit插件,如果想增加對代碼覆寫率的支援,就需要安裝本文介紹的jacoco的插件。由于這一部分并不是所有技術人員都會參與,是以主體内容就省略,直接跳轉到如何配置建構的指令一步。

上圖中就是對一個jenkins任務的配置,這裡的建構就是項目在建構時所需要做的一些工作,首先選擇合适版本的gradle,然後就是添加gradle所需要執行的tasks。儲存之後在該項目的控制台中點選立即建構,會出現一個正在建構的任務,這個過程可能比較漫長。建構成功之後可以在對應的jenkins的工作目錄下的該項目目錄找到生成的報告。特别提醒一下,這次建構gradle會自動為我們生成lint報告,友善了代碼review。
兩篇文章其實也隻是簡單介紹了Android的自動化單元測試,介紹了移動端自動化測試的可行性。不過也有很多沒有涉及或介紹不細之處,如其他的單元(UI)測試架構,對jenkins的使用等等。準備倉促,而且也不是專業測試開發人員,最後列出一下參考文章以拓展。
<a href="https://www.jianshu.com/p/9d988a2f8ff7">Android單元測試架構Robolectric3.0介紹</a>