要想借助測試來推動開發,每次測試必須能正確覆蓋到相關的代碼。初發佈於2019.3版本的Code Coverage預覽版包是一款能瀏覽代碼總覽的工具,可協助用户看到所有的內容。
Code Coverage包在與Test Runner結合使用時,可以顯示哪部分代碼將被測試,測試是否成功。而在Unity 2020.1 beta的0.3.0預覽版中,我們新添了幾項改進。
本資源包屬於coverage API的客户端,藉助API和C#反射將測試數據輸出為OpenCover格式文件,然後使用ReportGenerator解析結果,以HTML文檔的形式表示。
若想使用Code Coverage,首先需要在Package Manager(包管理器)中下載安裝Code Coverage預覽版。在2020.1 beta 8或以上版本中,需要在Edit > Project Settings > Package Manager中啓用預覽包才能開始使用。
接着,在Edit > Preferences > General中勾選Enable Code Coverage。啓用後編輯器的開銷會增加、性能會稍有降低,建議在不使用時禁用功能。勾選後包便能訪問Mono暴露的覆蓋數據的接口。接着,重啓Unity。
代碼測試準備完畢!
單次測試完成時,包會生成一份HTML覆蓋報告,其中展示了總代碼行覆蓋率和一行行的類列表,可作為參考。
Code Coverage報告
如何解讀結果呢?HTML報告中最為重要的數值是覆蓋行數,表示了測試中所覆蓋的代碼量。比如,若數值為75%,則表明有四分之一的代碼行沒有測試到。數值在計算時會考慮到哪些代碼行可以被測試到。
Coverage History中的圖表(截圖中的紅線)表明了每次項目測試時的覆蓋率,覆蓋率越高越好。如果有所下跌,可以編寫更多的測試來提升覆蓋率。
Code Coverage目前支持EditMode(編輯模式)和PlayMode(運行模式)測試,可以跟蹤長期的覆蓋量,可與Test Runner一同使用。如果沒有任何測試,則可以使用Coverage Recording(覆蓋記錄)功能記錄覆蓋數據。
Code Coverage 教程
我們有專門的入門教程來幫助大家入門。即使從未寫過自動測試,也可以找出亟待測試的部分。教程時長約30分鐘,在安裝Code Coverage包後,可在Package Manager的Samples下尋得。
Samples文件夾下將有一個Worksheet表格。
Code Coverage工作表單
教程將介紹以下內容:
什麼是Code Coverage
如何安裝Code Coverage
打開Code Coverage
game code: Shoot()函數介紹
生成PlayMode測試的Coverage覆蓋報告
如何添加Weapon武器測試來提升覆蓋率
如何為LaserController添加測試
如何清除覆蓋數據
如何使用Coverage Recording功能生成一份Coverage報告