1. 程式人生 > >(翻譯)Android應用生成測試覆蓋率報告

(翻譯)Android應用生成測試覆蓋率報告

對於使用AndroidJUnit4 runner建立的Android整合測試用例,之前一直都沒有發現,一種合適的產生程式碼覆蓋率的方式。我曾經嘗試過很多方式,但是要不就是不奏效,要不就是隻合適我現在已經不再使用的Robolectric測試框架,其他開發者,也漸漸不再新專案中使用這個測試框架了。比如Square的Sqlbrite專案,現在已經開始採用AndroidJUnit4 runner進行他們的專案測試。最近,我在Reddit上面發現了一個有趣的討論,從中我發現了一個不需要額外外掛,指令碼和多行配置就可以簡單生成程式碼覆蓋率的方式,Android SDK 現在已經內建了對 Emma Test Coverage

框架的支援,可以在官方文件中進行查閱。

我們只要做的一件事,就是在 build.gradle 中應用jacoco—android外掛。

apply plugin: 'jacoco-android'

譯者批註

在高版本的SDK中,上述外掛也不需要引用

然後參照如下示例,將 testCoverageEnabled 設定為 true

android {
   buildTypes {
      debug {
         testCoverageEnabled = true
      }
   }
}

為了能生成程式碼覆蓋率報告,我們需要將Android裝置或者模擬器連線到計算機,因為 在生成報告前,會執行 connectedCheck

任務。

之後,我們可以執行如下的命令列

./gradlew createDebugCoverageReport

該任務會分析 /src/main/java/ 路徑下的程式碼和 /src/androidTest/java/ 目錄下單元測試用例。

在執行這個任務之後,我們可以在模組的如下路徑中找到程式碼覆蓋率報告

/build/outputs/reports/coverage/debug/

我們可以在瀏覽器中開啟 index.html 檔案,可以看見視覺化的報告。
同時,在同一級目錄下,我們也可以找到可以供持續整合覆蓋率分析使用的 report.xml 檔案。

除了上面提到的檔案,Gradle也會在如下的路徑建立 coverage.ec

檔案。

/build/outputs/code-coverage/connected/

某些情況下,我們可能需要這些檔案,比如在選擇Jenkins外掛或者別的工具生成程式碼覆蓋率的時候。

下面,你能看見一個 Android 開源專案,Presfer,的程式碼覆蓋率報告。

這是一份由 JaCoCo 程式碼覆蓋率庫生成的報告。

通過分析報告,我增加了部分新的測試用例,小幅度優化了部分程式碼,使得專案的覆蓋率達到了 100%。

為了能在 Jenkins CI 上釋出報告,可以使用程式碼覆蓋率外掛,但是並不能確認外掛的穩定性。另一種解決方案是 HTML Publisher plugin,我們可以增加相應動作,在 Jenkins 的任務中,通過預設的HTML介面產生覆蓋率報告,我認為這是一種非常方便的方式,易於建立,並且方便進行程式碼導航,能定位到沒有覆蓋的程式碼行,方法和分支。

我們可以方便的觀察到Android專案的程式碼覆蓋情況通過這種簡潔快捷的方式,能幫助我們最終發現專案的瓶頸所在,增加應用或者lib庫的整體質量

相關推薦

翻譯Android應用生成測試覆蓋率報告

對於使用AndroidJUnit4 runner建立的Android整合測試用例,之前一直都沒有發現,一種合適的產生程式碼覆蓋率的方式。我曾經嘗試過很多方式,但是要不就是不奏效,要不就是隻合適我現在已經不再使用的Robolectric測試框架,其他開發者,也

轉載Android應用程式簽名系統的簽名(SignApk.jar)

1. 在安卓工具箱中,下載SignApk.jar。 2. 拿到終端上系統的簽名(由定製系統的廠商提供): 3. 在應用程式的專案中配置: androidManifest.xml中新增android:sharedUserId="android.uid.system"

20172309_《程式設計與資料結構》_課堂測試修改報告

20172309_《程式設計與資料結構(下)》_課堂測試修改報告。 課程:《程式設計與資料結構》 班級:1723 姓名: 王志偉 學號:20172309 實驗教師:王志強老師 實驗日期:2018年6月13日 必修/選修: 必修 實驗內容: 查詢演算法綜合示例: 實驗過程及結果

Android應用程式的記憶體分析翻譯

作者:Tim Bray Dalvik虛擬機器支援垃圾收集,但是這不意味著你可以不用關心記憶體管理。你應該格外注意移動裝置的記憶體使用,在上面記憶體空間是受到限制的。在這篇 文章裡面,我們來看看Android SDK裡面的一些記憶體剖析工具(profiling tools)

個推應用統計產品個數Android集成實踐

按鈕 官方網站 color 返回 註冊 3.0 控制 分享 ica 最近,產品部門向我們提出了統計APP數據的需求,我們測試了幾款產品後選擇了“個數”,它是個推旗下的應用統計產品,總的來說數據快準狠,體驗也不錯。這篇經驗就給大家介紹一下集成的詳細步驟。 一、 登錄賬號並創建

[Android]Android記憶體洩漏你所要知道的一切翻譯

以下內容為原創,歡迎轉載,轉載請註明 來自天天部落格:http://www.cnblogs.com/tiantianbyconan/p/7235616.html Android記憶體洩漏你所要知道的一切 原文:https://blog.aritraroy.in/everything-

Android 進階應用分享簡單實現-LazyApkShare

LazyApkShare 分享當前應用的簡單實現。 開源地址 LazyApkShare 新增依賴 Gradle 步驟一. 根目錄下build.gradle allprojects { repositories { maven { url

【星雲測試】開發者測試3-採用精準測試工具對springcloud微服務應用進行穿透測試

1、微服務簡介   微服務英文名稱Microservice,Microservice架構模式就是將整個Web應用組織為一系列小的Web服務。這些小的Web服務可以獨立地編譯及部署,並通過各自暴露的API介面相互通訊。它們彼此相互協作,作為一個整體為使用者提供功能,卻可以獨立地執行。 2、Sp

開發者測試4-採用精準測試工具對dubbo微服務應用進行測試

簡介:本文主要目的是把現今主流的Dubbo框架專案和精準測試進行對接,通過精準測試的資料穿透、資料採集、測試用例與程式碼的雙向追溯、資料分析等一系列精準測試的特有功能達到對專案質量的保證。   本次環境搭建分為基礎環境準備、Dubbo環境搭建、精準測試環境搭建、精準測試與Dubbo環境對接等一整套完

Android進階應用程序啟動過程

1.前言 最近一直在看 《Android進階解密》 的一本書,這本書編寫邏輯、流程都非常好,而且很容易看懂,非常推薦大家去看看(沒有收廣告費,單純覺得作者寫的很好)。 今天就將 應用程序啟動過程 總結一下(基於Android 8.0 系統)。 文章中例項&nbs

android記錄筆記針對應用框架層梳理的整合筆記

這篇筆記主要是結合自我認知,加上各種學習資源,整理而成的查詢筆記,整理的不好,還望指出錯誤,主要是用於查詢與記錄,該篇筆記大多借鑑劉望舒的部落格,對大佬致敬哈,我也是你忠實的粉絲,如有冒犯,請見諒,我將立即刪除本篇文章。 針對應用框架層我認為必須要清楚的知識概念: 第一:

[轉]截圖原理——Android自動化測試學習歷程(2)

三、Robotium的截圖處理的程式碼分析 步驟: (1) 程式碼分析: 追本溯源,開始找路。。。 第一步跳轉到的函式:takeScreenshot(String name) 複製程式碼 /**      * Takes a screenshot and saves it 

輕鬆學習Ionic 修改應用圖示及新增啟動畫面更新官方命令列工具自動生成

 <platform name="android">              <icon src="res/android/ldpi.png" density="ldpi" />              <icon src="res/android/mdpi.png" de

不要慫,就是GAN (生成式對抗網路) :訓練和測試 GAN

在 /home/your_name/TensorFlow/DCGAN/ 下新建檔案 train.py,同時新建資料夾 logs 和資料夾 samples,前者用來儲存訓練過程中的日誌和模型,後者用來儲存訓練過程中取樣器的取樣圖片,在 train.py 中輸入如下程式碼:

Android 4.4 Graphic系統詳解2 VSYNC的生成

VSYNC 的概念 VSYNC(Vertical Synchronization)是一個相當古老的概念,對於遊戲玩家,它有一個更加大名鼎鼎的中文名字—-垂直同步。 “垂直同步(vsync)”指的是顯示卡的輸出幀數和螢幕的垂直重新整理率相同,這完全是一個CRT顯

原創如何在效能測試中自動生成並獲取Oracle AWR報告

由於日常使用最多的資料庫為Oracle,因此,最近又打起了Oracle的AWR報告的主意。 過去我們執行測試,都是執行開始和結束分別手動建立一個快照,然後需要這部分資料的時候再去獲取AWR報告檢視。 但是有的時候忙亂起來或者一個任務項交給別人來做就經常會有忘記建立快

Android開發中屬性動畫ObjectAnimator應用

昨天看到一個有意思的動畫,就想用Android 中的屬性動畫(ObjectAnimator)給實現出來,順便複習一下屬性動畫的使用,完成效果如下: 看完了效果,現在該開始動手幹活了~ 首先先分析一下這個動畫用Android 中的屬性動畫該怎麼實現: 看上去這個動畫很簡單,可以用

截圖原理――Android自動化測試學習歷程

把兩節的內容彙總起來,第一節講的是如何在apk中直接進行截圖,用到了Robotium的Solo類的takeScreenShot方法,有一個小的 android demo,以及從方法一直往裡鑽,知道它具體是怎麼進行截圖的。 第二節講的是脫離apk,直接在PC端截圖,通過的是

安卓防破解自用筆記1android studio 開發生成so檔案

1. 我這使用的是mac book pro,安裝的Android studio版本在此時此刻還算可以用, 可能不是最新的,但我不要求一定要最新的。為了防止今後看到這個文章跟自己的出現的問題無法對上,我先登記一下我使用的系統版本及as版本號。 2. 在官方或其它渠道下載一

ASP.NET Core 中文文件 第二章 指南 09 使用 Swagger 生成 ASP.NET Web API 線上幫助測試文件

對於開發人員來說,構建一個消費應用程式時去了解各種各樣的 API 是一個巨大的挑戰。 在你的 Web API 專案中使用 Swagger 的 .NET Core 封裝 Swashbuckle 可以幫助你建立良好的文件和幫助頁面。 Swashbuckle 可以通過修改 Startup.cs 作為一組 NuGe