Nunit單元測試基礎知識

來源:互聯網
上載者:User

推行單元測試的目的:

1、 減少BUG提高項目的品質

2、 養成良好的編碼習慣,提高開發人員編碼水平

 

要測什麼What?

最小的可測試軟體元素(單元), 包括單元的內部結構(如邏輯和資料流)以及單元的功能和可觀測的行為.

 

由於開發方式的不同,單元測試一般劃分方法如下:

 

1. 物件導向的軟體開發:以Class(類)作為測試的最小單元。以方法的內部結構作為測試的重點。

 

2. 結構化的軟體開發:以模組(函數、過程)作為測試的最小單元。

 

 

如何測試How?

白盒測試方法:測試單元的內部結構, Nunit  Nmock

黑箱測試方法:測試單元的功能和可觀測的行為 《通用測試案例》

 

步驟:

一、如何設計單元測試

 

需要弄清楚被測試代碼實現的功能和相應的邏輯關係;

 If…else…

 Switch..case…

 While...

 

同時還要考慮到測試的輸入內容,以及返回的結果;

用例的設計要保證面面俱到,是否覆蓋了每一條路徑。
  

而如何做到面面俱到這就需要惡我們對每個函數進行詳細的分析,將分析和討論的結果歸入相關的測試庫中。初期工作的進度慢並不要緊,只要能做得很詳細對於以後的測試還是有很大的協助。或許以後的測試中,只要直接調用原來寫過的測試類別庫,修改部分簡單的語句就可以實現新模組的單元測試了

[TestFixture]表示:類包含了測試代碼(這個特性可以被繼承)。這個類必須是公有的,這個類還必須有一個預設建構函式。

[Test]表示它是一個測試方法。測試方法的傳回值必須為void並且不能帶有參數

 [SetUp]屬性:用來標識方法,在開始所有測試之前執行,用來在測試前初始化一些資源,比如初始化類。

[TearDown]屬性:用來標識方法,在所有測試完成之後執行,用來釋放一些資源。

[Ignore]屬性:用來標識方法,指示這個方法由於某些原因暫時不需要測試(比如沒有完成相關代碼)

 

 

二、Nunit工具的使用

 

    參考 :Nunit架構在VS2005環境下單步調試  

 

三、Nunit常用類和方法

Assert(斷言)

如果宣告失敗,方法將沒有返回,並且報告一個錯誤。

如果一個方法中包括了多個斷言,在失敗的斷言之後的所有斷言將不會被執行。基於這個原因,最好是為每個測試的斷言使用try語句。

 

1、法測試二個參數是否相等

Assert.AreEqual( int expected, int actual );

Assert.AreEqual( decimal expected, decimal actual );

。。。。

 

2、測試二個參數是否引用同一個對象

Assert.AreSame( object expected, object actual );

Assert.AreNotSame( object expected, object actual );

 

3、測試一個對象是否被一個數組或列表所包含

Assert.Contains( object anObject, IList collection );

 

   比較斷言:

4、測試一個對象是否大於另一個對象

Assert.Greater( int arg1, int arg2 );

 

5、法測試一個對象是否小於另一個對象

Assert.Less( int arg1, int arg2 );

 

類型斷言:

Assert.IsInstanceOfType( Type expected, object actual );

 

條件測試:

Assert.IsTrue( bool condition );

Assert.IsFalse( bool condition);

Assert.IsNull( object anObject );

Assert.IsNotNull( object anObject );

Assert.IsNaN( double aDouble );

Assert.IsEmpty( string aString );

Assert.IsNotEmpty( string aString );

Assert.IsEmpty( ICollection collection );

Assert.IsNotEmpty( ICollection collection );

 

字串斷言(StringAssert)提供了許多檢驗字串值的有用的方法

StringAssert.Contains( string expected, string actual );

StringAssert.StartsWith( string expected, string actual );

StringAssert.EndsWith( string expected, string actual );

StringAssert.AreEqualIgnoringCase( string expected, string actual );

 

四、屬性(Attribute):

TestFixtureAttribute (NUnit 2.0)

此特性標記一個類包含有測試方法,以及可選的安裝(setup)和卸載(teardown)方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.