要想借助測試來推動開發,每次測試必須能正確覆蓋到相關的程式碼。初發佈於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報告