[Unity] Unity中的單元測試和錯誤追蹤

本文將由Unity大中華區(qū)企業(yè)支持經(jīng)理高川,為大家分享Unity自帶的單元測試及性能報告工具。

在游戲開發(fā)過程中,Bug的出現(xiàn)是無法避免的。解決Bug的重要前提是及時發(fā)現(xiàn)Bug,準(zhǔn)確定位Bug。Unity提供了兩個優(yōu)秀的工具來幫助大家完成“殺蟲”工作。

Unity Editor Test Runner

在開發(fā)過程中,一個Bug被發(fā)現(xiàn)的越早,其修復(fù)的可能性越高,而修復(fù)成本則越低。為了盡早發(fā)現(xiàn)問題,避免Bug積累重疊,單元測試就顯得尤為重要。

單元測試可以針對特定功能模塊進行持續(xù)的檢測,幫助開發(fā)人員盡早發(fā)現(xiàn)問題,及時修正。在Unity編輯器中集成了單元測試模塊。該模塊源自著名的開源工程NUnit,與Unity引擎結(jié)合后,可以方便的完成日常開發(fā)中的單元測試功能。下面來介紹一下如何使用這個功能。

首先要建立測試用例。測試用例的腳本需要放到Editor 目錄下:


在測試用例腳本中引入名字空間NUnit.Framework:


測試用例函數(shù)需要一個[Test]屬性來標(biāo)識:


測試用例函數(shù)中通過Assert類下面的一系列函數(shù),進行斷言測試:


一個測試用例中可以有多個斷言,只有所有斷言都通過檢測,才會認(rèn)為一個測試用例通過了檢測。

寫好全部測試用例后,打開Unity Editor的Windows->Editor Tests Runner,在Editor Tests窗口中我們可以看到測試工具按鈕和剛剛寫的一系列測試用例:


上面一欄中包含按鈕:Run All,Run Selected和Run Failed

- Run All:運行全部測試用例

- Run Selected:運行當(dāng)前選擇的測試用例

- Rerun Failed:重新運行全部失敗的測試用例

右側(cè)的四個圖標(biāo)則分別表示:

?- 成功的測試用例數(shù)

? ? ? ? - 失敗的測試用例數(shù)

? ? ? ? - 被忽略的測試用例數(shù)

? ? ? ? - 尚未運行過的測試用例數(shù)

下方的樹狀結(jié)構(gòu)表示具體測試用例當(dāng)前的狀態(tài)。

同時Editor Tests提供headless的運行模式,可以很好的與CI&CD等自動化流水線配合。

Game Performance Reporting

Unity提供的另外一個工具是Game Performance Reporting(GPR)性能報告。這是一個用來做運行時錯誤追蹤的系統(tǒng)。目前市面上也有很多運行時錯誤追蹤系統(tǒng),但很多在和Unity引擎結(jié)合使用中效果并不理想。主要表現(xiàn)在,追蹤到的代碼可讀性差,錯誤追蹤不準(zhǔn)確,定位錯誤等等。結(jié)果造成了開發(fā)者看到很多錯誤報告上來,然而并不能解決的尷尬局面。做為Unity原生解決方案,Game Performance Reporting性能報告系統(tǒng)完美解決了這個問題。下面來簡單介紹一下這個系統(tǒng)。

首先改系統(tǒng)整合簡單。Game Performance Reporting性能報告繼承了Unity一貫的使用簡單的風(fēng)格,在Unity5.4之前的Unity版本(目前僅支持Unity5.x系統(tǒng)),開發(fā)者需要去Unity官網(wǎng)下載一個UnityPackage并導(dǎo)入工程。然后在游戲啟動時的某個腳本上加上一句代碼:

CrashReporting.Init("<Project Id>");

其中Project ID是在Unity官網(wǎng)上生成的唯一ID。

在Unity5.4版本中,Game Performance Reporting系統(tǒng)直接被整合到了編輯器中。開發(fā)者只需要在Services窗口中將Performance Reporting的開關(guān)打開即可:


當(dāng)游戲在運行時(測試期或者上線后)出現(xiàn)異常的時候,通過登錄Unity開發(fā)者頁面的Unity Online Services 就可以查看到異常的信息。

堆棧部分,在信息后臺是可以看到清晰的異常定位的。這樣可以快速的幫助開發(fā)者定位到問題所在:

同時Game Performance Reporting提供異常的基本數(shù)據(jù)統(tǒng)計,包括異常出現(xiàn)的設(shè)備,異常出現(xiàn)的時間點,影響到的客戶數(shù)量以及影響到的版本等等:

通過以上兩個工具,在開發(fā)期和運行時,開發(fā)者都可以很好的管理游戲的Bug數(shù)量,評估工程的質(zhì)量,及時發(fā)現(xiàn)和修改問題,從而提供更好的游戲體驗給廣大玩家。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容