1. 程式人生 > >KING_U3D學習之Unity Test Tools(一)_官方例子解析

KING_U3D學習之Unity Test Tools(一)_官方例子解析

Unity Test Tools是Unity3D自帶的一個免費測試外掛,你可以在Asset store下載它,下載地址:https://www.assetstore.unity3d.com/en/#!/content/13802,然後匯入,完成後選單項會有Unity Test Tools項,如下圖所示,

clip_image004

clip_image006

完成了外掛的匯入,我們就可以對專案的功能模組進行斷言檢查,整合測試,單元測試,甚至可以在不同平臺上執行測試樣本。


下面利用Unity官方的例子分別說說這幾種功能:

一、斷言檢查

斷言檢查是 UnityTestTools 的核心功能。我們能夠在GameObject上新增Assertion Component來使用這個功能。
在匯入外掛後,開啟UnityTestTools/Examples/AssertionExample中的專案檔案。我們能發現在場景中的兩個BouncingSphere都掛載了Assertion Component:

比較的數值型別在左上設定,觸發比較動作的時間在右上設定。這裡需要做的比較是:當球碰撞平臺,檢查它是否會反彈。所以,比較的物件是BouncingSphere的剛體向量,比較的行為是NotEqual,比較的誤差精度是0.001,比較的型別是與常量0進行比較。

另外,在選單Unity Test Tools->Assert Explorer中,可以看到整個場景中的檢查點。通過它,我們也可以做些快速更改。

二、整合測試(整合測試)

整合測試可以執行場景中的測試點,並返回結果。它是對Assertion Component的整合。我們開啟Unity Test Tools/Examples/IntegrationTestsFrameworkeExamples中的ExampleIntegrationTests.unity。點選Unity Test Tools->Integration Test Runner後,會出現一個Integration Test視窗。視窗中的每一項是一個測試點。

點選測試點就會切換到測試項,可以根據這些例子學習如何使用整合測試。

在Test1中的平臺上,掛了一個Call Testing,這個元件可以設定監聽某個函式的呼叫。如果它被呼叫則返回Method To Call中設定的結果。After Frames 與 After Seconds被用來設定 CallAfterFrame 與 CallAfterSecond 這兩個函式觸發時刻。我認為它們是用來判斷GameObject是否被disable或destroy。
Test2 是測試限定時間內是否返回了pass,否則就判定為失敗。
Test3 是Call Testing的Fail測試。
Test4 是測試Ignored標誌,當被忽略時,測試點不會執行。
Test With Assertions Fails判斷物件被繪製,以及兩個gameObject位置是否相同。
Test throwing exception監聽物件扔出的異常。如果收到指定的異常,可以標記結果為測試成功。
CodeBasedAssertionExample是使用程式碼動態建立一個AssertionComponent。
DynamicIntegrationTest是使用程式碼動態建立一個測試點。
這些例子基本包括了Integration Test的使用方法。在這個資料夾中的AngryBotsTests是一個實際的測試場景,你有興趣可以研究它。通常來說,這些測試要單獨建立一個場景。點選Integration Test視窗中的播放按鈕,即可執行測試點。


三、單元測試

單元測試需要將程式碼檔案放置在Editor中。它使用的是NUnit測試框架。使用方法可以參考Unity Test Tools/Examples/UnitTestExample/Editor/SampleTests。在單元測試編寫完成之後,點選Unity Test Tools->Unity Test Runner可以看到單元測試的視窗。由於在Editor資料夾中,單元測試的測試點不會受到場景的影響。點選執行可以看到測試結果。

總體上說,應該多使用整合測試。因為整合測試可以更真實的模擬實際情況。另外通過Platform Runner,可以將整合測試打包,執行在所需的平臺上。這對於不同平臺的測試也非常有價值。

參考: