C#程序員整理的Unity 3D筆記(九):Unity 3D測試淺析
Unity中的組件上的類,是不能new的,必須通過組件去獲取,new出來的東西是null。
if (amainfo.nameHash == Animator.StringToHash(Base Layer.idle))
{
m_animator.SetBool(Run, true);
}
代碼無法執行時,在navigation面板中點擊Bake,如下圖
必須為碰撞體添加碰撞組件,否則Physics.Raycast函數無法檢測到
刪除destory時的時間,否則產生的多線程會導致計數不准確!
Unity3D自帶測試工具,只需要在Asset Store中下載,然後導入,完成後菜單項會有Unity Test Tools項(如下圖),完成了插件的導入,就可以進行單元測試了。
Unity3D的單元測試和VS2010的單元測試很幾乎一樣,如果接觸過VS的單元測試,使用Unity3D的單元測試會簡單很多。
1. 新建‘Editor‘文件夾,在文件夾中建一個單元測試的類,如下圖
2. 在測試類文件中添加需要的測試方法,基本和VS中的單元測試一樣,如下圖所示:
3. 完成測試類的新建,點擊Unity Test Tools 菜單中的Unit Test Runner 就可以進行單元測試,如下圖:
4. 點擊進行單元測試菜單後,進入測試界面,點擊開始測試按鈕,可以看到我們新建的測試類以及包含需要測試的方法,當時綠色的對號時,表示測試通過,否則表示測試失敗,如下圖:
以上就是Unity3D單元測試運行的基本步驟,如果熟悉VS開發平台的話,就會發現和VS的單元測試幾乎是完全一樣的。
集成測試Integration
由於單元測試只能測試單獨函數的邏輯,無法模擬真正的游戲運行場景,所以一般游戲場景的模擬還是要用到集成測試。Unity3D的集成測試會調用Unity的運行函數,逐個測試用例。相當於實際游戲運行環境。
集成測試分為動態集成測試和普通集成測試
1. 普通集成測試,如果要測試某個GameObject,需要添加下圖2的腳本組件,在
菜單中,添加完成後,可以對組件進行測試,運行
,即可以看到結果。如下圖:
圖1
圖2
每一項集成測試都需要通過斷言的組件的判斷,這種普通測試只是用於一些簡單的測試,如坐標移動范圍,是否需要可見等。
動態集成測試
新建測試 New Test ,在它之下創建一個GameObject,創建TestScript腳本綁定在GameObject。
如果在該場景名下,動態測試腳本會自動掛載到測試面板中。如下圖:
新建一個.cs文件裡,創建若干個測試類。再針對不同模塊,分成不同測試場景,進行測試,即可。也能支持NGUI等許多插件。按鈕響應事件利用反射強制調用一下。