unity Test Tools 測試,unitytest

來源:互聯網
上載者:User

unity Test Tools 測試,unitytest

孫廣東  2015.9.13

         Model based testing framework

         StrangeIoc

https://www.assetstore.unity3d.com/en/#!/content/13802

https://bitbucket.org/Unity-Technologies/unitytesttools

https://bitbucket.org/Unity-Technologies/unitytesttools/wiki/Home

http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/test-tools

http://nsubstitute.github.io/help.html

Nunit 和 NSubstitute 庫


每個軟體系統包括的功能單位。 在物件導向的語言,功能的最小單位是一個方法。  這些方法通常取決於其他 方法和類。如果你要測試 方法,將會出現一些挑戰。
• 第一個挑戰是,外部依賴項並不容易設定,例如某些對象可能需要複雜 的初始化。
• 第二個挑戰是測實驗證  要求得到某些行為的其他類中使用的特定的執行路徑。
• 最後,調用外部類的方法可能導致一些變化在一個環境中可能不會復原,例如從資料庫中刪除一 個真實的記錄。


單元測試是測試單元 功能 在孤立的環境中。與所有的依賴關係  孤立的 。這意味著該測試在測試特定的環境,只有一個執行路徑是可工作的。


有五個測試雙模式:  類比虛擬對象Dummy object,Test stub, Test spy, Mock  和 Fake。


Unit Tests單元測試

什麼"單元測試"。在這篇文章的上下文中,它將被定義為是一個測試:

• 用代碼編寫。

• 集中在一個 單一的 "事" (方法/類)。
• 沒有 "外部依賴項(external dependencies)" (例如: 不依賴於 Unity 編輯器  或  需要串連到線上服務資料庫 )。


Writing Unit Tests編寫單元測試

              若要建立 單元測試,此包使用 NUnit-一個非常受歡迎的架構,協助建立和執行單元測試。


           此外包括了 NSubstitute-一個 類比執行 的架構(就是沒有網路的話,可以類比網路的執行 ),可以建立 "假" 的對象。這些假貨 是傳遞給測試  而不是"真正的" 對象的方法的對象, 在那裡的 "真實"的對象 不能為測試因為它建立的情況下 依賴於外部資源 (檔案、 資料庫、 遠程伺服器等)。

下面的樣本示範一個簡單的指令碼來管理player 生命值 :

// A simple component that keeps track of health for game objects.public class HealthComponent : MonoBehaviour{    public float healthAmount;     public void TakeDamage(float damageAmount)    {        healthAmount -= damageAmount;    }}

對應的單元測試的例子:  (要放在Editor 檔案夾下 )

using Nunit.Framework; [TestFixture]public class HealthComponentTests{    [Test]    public void TakeDamage_PositiveAmount_HealthUpdated()    {        // Create a health component with initial health = 50.        HealthComponent health = new HealthComponent();        health.healthAmount = 50f;         health.TakeDamage(10f);              // 要測試的方法         // assert (verify) that healthAmount was updated.        Assert.AreEqual(40f, health.healthAmount)  // (預期,當前值)    }}


在這個單元測試的例子裡能夠看到

1.一個類 包含測試  [TestFixture]  特性。

2.單元測試方法應 有  [Test]  特性。

3. 測試構建的類,它就是要測試,與它 (調用 TakeDamage 方法)  進行互動和 斷言 (驗證) 之後 使用 NUnit 的預期結果斷言 Assert 類。


單元測試運行程式

後添加單元測試,我們可以使用單元測試運行程式運行。
從工具列菜單中開啟包含的單元測試運行程式:

 


         它是允許執行單個測試基本運行,項目中的所有 測試或  所有以前失敗的測試。有其他更進階的選項,如設定為自動啟動並執行代碼編譯。測試回合程式視窗顯示所有測試專案中   通過組織他們下了定義還可以顯示從他們執行日誌訊息或異常類的。

運行能調用代碼,使它能夠從命令列運行所有測試。
Unity.exe -projectPath PATH_TO_YOUR_PROJECT -batchmode -quit -executeMethod UnityTest.Batch.RunUnitTests -resultFilePath=C:\temp\results.xml

* ResultFilePath 參數是可選的: 它用來指定用於儲存的運行所有測試產生的報表的路徑。

Integration Tests整合測試

      有時,單元測試是太低級。它通常需要測試多個組件、 對象和它們之間的相互作用。該軟體包包含允許建立和執行測試在單獨的"測試"的情境中使用真正的遊戲對象和組件整合測試架構。

編寫整合測試

        整合測試與單元測試不同不是在代碼中寫的。  相反,一個新的情境應該添加到項目。這情境 將包含測試對象,其中每個定義一個 單一的整合測試。


Step by Step

            建立一個新的情境,用於測試 (它可以是有這些情境的命名規範,所以很容易刪除它們後來在構建遊戲時很有協助)。
開啟運行整合測試 (從工具列菜單中)。

 


Assertion component斷言組件
         斷言組件用於安裝的不變數的 GameObjects 。設定該組件不需要編寫任何代碼 — — 這一切都是在編輯器使用者介面中。它是容易可擴充,可定製,並可以為您自己的需要配置。


單元測試運行程式
           在編輯器中 NUnit Framework 的整合允許您執行單元測試從Unity內部 。這意味著您可以執行個體化   遊戲對象,對它們不可能 從的Unity 外部操作。我們提供綜合的測試回合程式運行測試並報告結果。

NSubstitute library





著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.