首頁>技術>

為你的Android實現測試覆蓋率

續上篇《為你的Android新增第一個單元測試》,繼續最佳化我們的專案,為這個加解密專案實現測試覆蓋率的追蹤,從這篇你可以瞭解到:

實現Android的測試覆蓋率覆蓋率指標的含義實現Android的測試覆蓋率

我們使用的是jacoco來實現測試覆蓋率。

備註我的專案環境為gradle 6.5,低於gradle 6.0的專案請自行查詢另外的jacoco實現方式(gradle 6以上對檔案許可權進行了更改)。

 classpath 'com.dicedmelon.gradle:jacoco-android:0.1.5-SNAPSHOT

在全域性的build.gradle新增一個jacoco的classpath

 apply plugin: "jacoco-android"

在模組下的build.gradle新增jacoco-android外掛

 ./gradlew clean jacocoTestReport

現在可以愉快地在命令列下執行此命令,得到測試覆蓋率報告了。

覆蓋率報告在app/build/jacoco/jacocoHtml/index.html下

覆蓋率指標的含義

如圖所示,這個是我們整個App專案的測試覆蓋率報告。綠色部分和百分比是已測試覆蓋到的,紅色部分是未覆蓋到部分。閱讀這份報告應該是從右往左看(我的習慣),這些指標分別是:

類覆蓋率方法覆蓋率行覆蓋率圈複雜度覆蓋率邏輯分支覆蓋率指令覆蓋率

類覆蓋率度量class類檔案是否被測試方法覆蓋率度量被測程式的方法是否有被測試行覆蓋率度量每行程式碼是否有被測試圈複雜度覆蓋率度量方法裡所有可能的最小路徑數是否被測試邏輯分支覆蓋率度量方法裡if和switch語句分支覆蓋情況指令覆蓋率度量單個java二進位制程式碼指令的覆蓋情況

所以從右往左看,這些指標會逐步細化,就可以瞭解到專案程式碼的測試情況。我們經常看到一些管理人員提出要求如:“我們的專案要達到70%以上的程式碼覆蓋率”,那他說的70%程式碼覆蓋率到底指的是什麼呢?抑或說,其實他也不知道指的是什麼呢?這是個我一直百思不得其解的有趣問題。

測試覆蓋率的思考

回到我們這個SecurityHelper測試全透過,覆蓋率達到100%,那麼:

測試覆蓋率達到100%是否代表這個程式碼質量就完美無暇呢?如果不是,又怎麼繼續提升呢? 大家可以回覆表達觀點哦作者聯絡方式:

作者聯絡方式:

16
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • C/C++程式設計筆記:C++中的引用!(含引用和指標的對比)