-
概述
- 使用 idea 自帶的 code coverage 工具
-
背景
- 了解 白盒測試用例設計 和 測試覆蓋率 之后, 大概就需要 實踐 了
- 實踐的話, 還是需要 工具 來檢驗效果
-
工具選取
- 選項
- JaCoCo
- IDEA Code Coverage
- 結果
-
兩個都想試試
- 先看看 IDEA CC, 這個比較簡單
- JaCoCo 感覺更加復雜
- 指標
- 使用的場景都更加復雜
-
先講 IDEA Code Coverage
- 簡單
- Idea 自帶, 集成方便
-
- 選項
1. 准備
-
理論基礎
- 白盒測試用例設計
- 測試覆蓋率
-
環境
- os
- win 10
- ide
- idea 2018.2
- 組件
- java
- jdk8
- testng
- 6.14.3
- maven
- 3.6.0
- java
- os
-
代碼
- maven architecture
- quickstart
- maven architecture
-
其他
-
idea 插件
- coverage
- 這個一定要有
- 有了, 一定要打開
- idea 添加插件, 我就不講了
- coverage
-
testng 的配置文件
- 這個我也不細講了
- 自動生成配置文件的插件, 我之前講過
- 配置文件里一些主要的配置, 我也講過
- 這個我也不細講了
-
2. 觸發
-
概述
- 通過 執行測試, 觸發 Coverage 插件
-
步驟
- 執行測試
- 進入某個測試類
- 比如 maven 工程自帶的 AppTest 類
- 執行測試
- 在 類 中右鍵
- 選擇 'Run Apptest with Coverage'
- 當然, 執行方式有很多
- 方法
- 類
- 配置文件
- 進入某個測試類
- 執行測試
-
結果
- 測試執行完畢
- 默認在 idea 右邊, 彈出一個 coverage 的插件
-
問題
- 如果沒有出現怎么辦
- 這個需要確認這些東西
- 插件是否下載
- 插件是否激活
- coverage 視圖是否激活
- File > Settings > Build, Execution, Deployment > Coverage
- Active coverage view 選項
- 記得打鈎
- Active coverage view 選項
- File > Settings > Build, Execution, Deployment > Coverage
- 這個需要確認這些東西
- 如果沒有出現怎么辦
3. Coverage 視圖簡單介紹
-
概述
- 簡單說下視圖里的內容
- 其實沒啥好說的, 操作兩下, 就明白了
- 簡單說下視圖里的內容
-
標簽
-
標題
- 你執行 測試, 所對應的 Configuration
- 這意味着, 你又可以有地方調參數了...
- 你執行 測試, 所對應的 Configuration
-
左邊一列的操作
- 向上
- 平鋪展示
- coverage 視圖焦點, 控制代碼展示窗口
- 代碼展示窗口, 控制 coverage 視圖焦點,
- 生成報告
- 選擇 文件路徑, 生成報告
- 報告內容, 並不會很多
- 自己看看, 就明白了了
- 關閉視圖
-
表格內容
-
元素
- 包或者文件
-
class, %
- 類覆蓋率
-
method, %
- 方法覆蓋率
-
line, %
- 行覆蓋率
-
-
表格交互
- 單擊包
- 進入 包內, 並展示包內覆蓋率
- 單擊類
- 代碼會跳轉的類, 並且會聚焦到沒有覆蓋的位置
- 單擊包
-
4. 代碼區域
-
概述
- 執行 帶覆蓋率的測試 后, 代碼區域也會發生變化
- 我這邊默認是的 coverage 模式是 simpling
- 所以我先按照這個講...
-
代碼窗口
- 側邊欄
-
色塊
- 紅色
- 沒有覆蓋
- 綠色
- 覆蓋至少一次
- 黃色
- 條件覆蓋不充分
- 鼠標點擊顏色
- 會出現 浮動的小窗
- 沒啥前端背景, 所以這些東西准確叫啥, 真的讓我很為難
- 紅色
-
浮動小窗
- 頂部控件
- 上下
- 在色塊之間上下移動
- 灰色文件夾
- 暫時不可用, 后來再講
- 字節碼展示
- 開啟新的小窗口, 展示 字節碼
- 高端功能暫時用不了
- 開啟新的小窗口, 展示 字節碼
- 顏色設置
- 這個暫時用不了
- 默認顏色挺好的
- 這個暫時用不了
- 紅叉
- 這個不是退出標簽
- 這個是清楚這一輪的覆蓋率數據
- 點的時候請注意
- 退出的話, 直接鼠標在別處點一下, 就行了
- 上下
- 頂部控件
-
- 側邊欄
5. Project 區域
-
概述
- Project 區域的覆蓋率展示
-
驚喜
- 眼瞼的同學, 已經有了新的發現
- Project 欄里的包樹形圖, 右側已經出現了一些關於 覆蓋率的信息
- package
- 類覆蓋率
- 行覆蓋率
- class
- 方法覆蓋率
- 行覆蓋率
- package
- Project 欄里的包樹形圖, 右側已經出現了一些關於 覆蓋率的信息
- 眼瞼的同學, 已經有了新的發現
-
疑問
- 問題1: 我不想要這東西, 有辦法嗎?
- 當然有啦
- 路徑
- ctrl + alt + f6
- Analyze > show coverage data
- 操作
- 勾選你想要顯示 覆蓋率的路徑
- 然后確定
- 路徑
- 當然有啦
- 問題1: 我不想要這東西, 有辦法嗎?
6. configuraion 配置
-
概述
- 覆蓋率這個東西, 也是可以配置的
-
路徑
- 打開 run configuration
- 找到你執行測試的那個 configuration
- 切換到 coverage tab
-
選項說明
- choose coverage runner
- 現在用 idea
- 講 jacoco 的時候, 應該要換的
- sampling & tracing
- 模式
- 針對 idea 的選項
- 其他 runner, 只有 sampling
- sampling
- 簡單模式
- 就是上面講的東西
- 簡單模式
- tracing
- 追蹤模式
- 概述
- 會對 判定 做更細致的追蹤
- 變化
- 后面會描述
- 概述
- 追蹤模式
- 模式
- packages and classes to record coverage data
-
概述
- 追蹤覆蓋率的類
-
建議
- 最好勾選一下
- 如果默認的話, 所有的包都會出現在 coverage 那個窗口里
- 雖然沒 覆蓋率, 但是看着好煩的...
- 如果默認的話, 所有的包都會出現在 coverage 那個窗口里
- 最好勾選一下
-
- choose coverage runner
-
tracing 模式的變化
-
概述
- tracing 模式有所增強
-
增強內容
- 對 if 的判斷, 有了增強
- 會統計 if 里 各個條件 真假執行次數
- 對 if 的判斷, 有了增強
-
具體表現
- 單擊 左側的色塊
- if 條件那行, 會有更加明確的信息
- 單擊 左側的色塊
-
選項: track per test coverage
-
概述
- 追蹤測試方法
-
回顧
- 之前色塊的小彈窗里, 有個不可執行的灰色文件夾, 還記得嗎?
-
勾選之后
- 單擊那個 灰色文件夾
- 有新彈窗出現
- 內容是 執行這個代碼的 測試方法
- 感覺是個 很不錯的功能
- 單擊那個 灰色文件夾
-
-
-
問題
- 嘗試配置修改中, 我有過多次執行同一個 configuration
- 執行完后, 會有一個彈窗
- 看得我一臉懵逼
- 這玩意是什么鬼, 能設置嗎?o
- 看得我一臉懵逼
- 當然能啦
- 執行完后, 會有一個彈窗
- 嘗試配置修改中, 我有過多次執行同一個 configuration
7. settings 配置
-
概述
- settings 里的配置
-
路徑
- 開始提到過的一個路徑
- File > Settings > Build, Execution, Deployment > Coverage
- 開始提到過的一個路徑
-
配置
-
when new coverage is gathered
-
概述
- 配置 新的覆蓋率 是否聚合
-
選項
-
active coverage view
-
概述
- 展示 coverage 窗口
-
作用
- 執行 run test with coverage 時, 展示 coverage 窗口
-
這次一定要先講下面這個...
- 首先要窗口出現, 才能出發后面的東西吧
-
-
一個 radio
-
選項
- show options before applying coverage to the editor
- 已經彈出 coverage 視圖后, 再次執行, 會彈出一個 選項框
- 詢問的選項, 就是下面三種
- 已經彈出 coverage 視圖后, 再次執行, 會彈出一個 選項框
- do not apply collected coverage
- 丟棄 這次的 代碼覆蓋率結果
- replace active suites with the new one
- 丟棄 上次的 代碼覆蓋率結果
- 將 這次的 代碼覆蓋率結果, 填充到 coverage 窗口
- add to the active suites
- 保留 上次的 代碼覆蓋率結果
- 將 這次的 代碼覆蓋率結果, 疊加到 coverage 窗口
- show options before applying coverage to the editor
-
問題
- 大部分時候都好用, 但是碰到過幾次失靈的情況
- 直接用了 選項3
- 問題需要我 確認
- 大部分時候都好用, 但是碰到過幾次失靈的情況
-
-
-
-
java coverage
-
選項
- 不統計 普通類 的默認構造函數
- 統計也沒啥意義
- 不統計 工具類 的私有構造函數
- 工具類不需要實例化
- 所以通常做一個 私有構造, 防止有開發把這個類實例化
- 工具類不需要實例化
- 不統計 普通類 的默認構造函數
-
解釋
- 這來選項我就翻譯一下, 意義就不解釋了, 大家應該都懂
-
-
ps
-
ref
- Code coverage
- 官方文檔
- 就這一個吧, 其他的基本是自己邊嘗試邊整理
- 官方文檔
- Code coverage
-
后續
- jacoco
- ide
- maven
- jenkins
- jacoco
-
為啥不直接講 jacoco
- jacoco 其實有點復雜
- 數據
- 配置
- idea 簡單好理解
- 兩者有些東西, 本質上是相通的
- 理解了簡單的 idea, 后面依葫蘆畫瓢, 學習曲線會更加平滑
- jacoco 其實有點復雜
-
遺漏
- 生成的結果報表
- 這個不太難, 基本都能看懂
- 生成的結果報表
