.NET單元測試學習(一)
轉貼於:http://blog.csdn.net/cpcpc/article/details/6185853
斷言(Assertions)是單元測試框架中比較核心的應用,如果一個測試方法中有多個斷言,其中一個斷言失敗也會導致測試不通過,或報告錯誤資訊。斷言分為多種,如下列表:
●Equality Asserts;
●Identity Asserts;
●Comparison Asserts;
●Type Asserts;
●Condition Test;
●Utility Methods;
Equality Asserts
此方法判斷兩個引數是否相等,過載方法提供了公共的值型別,所以引數間不存在裝箱操作就可直接使用進行比較。
主要的此類斷言比較方法如下:
(1)Assert.AreEqual(param1,param2,[message],[param[]])
(2) Assert.AreNotEqual(引數同上)
param1是你期望的值,param2是測試用的值,如果引數是數值,不能的資料型別之間的比較也是允許的,比如說INT 與DOUBLE等。如:Assert.AreEqual(12,2.5) 。但是在對Float型別進行比較時,需要設定一個偏差數(tolerance),也就是說兩個數的偏差在這個範圍內就認為是相等的。
此外Assert.AreEqual還可以用來比較N維陣列或集合(collection),只要資料組維數、元素資料型別相等再加上各相應的元素值也相等,則認為兩個比較的引數相等。
Identity Asserts
Assert.AreSame and Assert.AreNotSame 是用來判斷兩個引數所引用的物件是否一致,如:
Assert.AreSame(object param1,object param2,[message])
Assert.AreNotSame(object param1,object param2,[message])
另外還有一個方法(Assert.Contain())用來判斷一個物件是否包含一個陣列或IList物件。
Assert.Contain(object param1,Array param2)
Assert.Contain(object param2, IList param2)
Condition Test
這個方法測試的是條件是否成立,同也可選擇性的使用引數來返回資訊。方法簽名如下:
Assert.IsTrue(condition,[message])
Assert.IsFalse(condition,[message])
Assert.IsNull(object anObject,[message])
Assert.IsNotNull(object anObject,[message])
Assert.IsNaN(Double anDouble,[message]) //值是否是數字
Assert.IsEmpty(String anString,[message])
Assert.IsNotEmpty(String anString,[message])
Assert.IsNotEmpty(ICollection collectionType,[message])
注意:Assert.IsNotEmpty 和Assert.IsEmpty只能用於判斷String和Collection型別。
Comparison Test
在瞭解了關於兩物件的相等測試後,就會想要是大於,小於,大等於,小於等於怎麼寫?同樣斷言提供了上述的幾個方法分別是:Greater,Less,GreaterOrEqual,LessOrEqual. 方法簽名如下:
Assert.Greater( int arg1, int arg2,[message] );
Assert.Greater( int arg1, int arg2, [string message] );
Assert.Greater( decimal arg1, decimal arg2, [string message] );
Assert.Greater( double arg1, double arg2, [string message] );
Assert.Greater( double arg1, double arg2 , [string message] );
Assert.Greater( float arg1, float arg2 , [string message] );
Assert.Greater( IComparable arg1, IComparable arg2, [string message] );
同樣另外三個比較方法的引數也跟上面一樣,就不哆嗦了。
Type Asserts
我們可以去斷言一個物件的型別是什麼,比如說方法的返回值型別等等。通過如下方法:
Assert.IsInstanceOfType( Type expected, object actual, [string message], [params object[] parms] );
Assert.IsNotInstanceOfType( Type expected, object actual, [string message], [params object[] parms] );
IsInstanceOfType和IsInstanceOfType用來判斷是否相容於指定型別,即expected 是否相容(屬)於actual ,示例:
Type t=new object().GetType();
string s="dd";
Assert.IsInstanceOfType(s,t);
Utility Method
故明思義,效用方法。它包括兩個方法Fail() and Ignore() 它能夠讓你更直接的控制測試程式。如下:
Assert.Fail([string message],[param object[]])
Assert.Ignore([string message],[param object[]])
Fail()方法是讓你能夠產生一個失敗的測試,即讓某個測試立即失敗。Ignore()能夠動態地使一個或一組測試在執行時被忽略。不過這兩個並不常用。
StringAssert
它提供了一系列方法來驗證string型別的值,方法如下:
StringAssert.Contains(string expected,string actual,[message],[params object[] args])
StringAssert.StartsWith(同上)
StringAssert.EndWith(the same as above)
StringAssert.AreEqualIgnoringCase(the same as above)
StringAssert.IsMatch(the same as above)
CollectionAssert
提供一系列方法來校驗集合本身的內容或者兩集合之間的比較,如下:
.AllItemsAreInstancesOfType(ICollection,Type,[message],[param[]]) //判斷指定集合中的所有元素是否是所需型別的例項(ICollection是要測試的集合,Type應該為ICollection中包含每個物件查詢的物件的型別)。
.AllItemsAreNotNull(ICollection,Type,[message],[param[]]) //判斷集合中所有元素是否為空,如果為空則測試失敗。
.AllItemsAreUnique(ICollection,Type,[message],[param[]]) //判斷集合中的所有元素是否唯一,如果集合中任意兩個元素相等則測試失敗。
.AreEqual(ICollection expect,ICollection Actual,[],[],[]) //這個方法過載的引數還是很多的,相關的可以查下MSDN,測試兩個集合是否相等(所謂的相等是指具有相同順序、相同數量的相同元素)expect是測試要求的,Actual是測試生成的集合,
.AreEquivalent(ICollection expect,ICollection Actual,[message],[param[]]) //判斷兩個集合是否包含相同的元素,如果一個集合中包含另一個集合沒有的元素則引發異常。
.AreEqual(.........) //引數與AreEqual相同,功能則相反
.AreNotEquivalent(............) //引數與世AreEquivalent同,功能則相反。
.Contains(ICollection, Object,[message],[param[]]) //判斷集合是否包含指定的元素
.DoesNotContain(the same as above) //the reversed as above
相關文章
- Netty 框架學習 —— 單元測試Netty框架
- 單元測試學習
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- ASP.NET 系列:單元測試ASP.NET
- Django單元測試(一)Django
- .Net單元測試xUnit和整合測試指南(1)
- TDD學習筆記【二】---單元測試簡介筆記
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 單元測試:單元測試中的mockMock
- .NET 專案中的單元測試
- (一) 初探 iOS 單元測試iOS
- 軟體測試基礎 (一): 單元測試
- 軟體測試基礎 (一):單元測試
- 認真一點學 Go:19. 單元測試Go
- 淺談.Net Core後端單元測試後端
- ASP.NET 系列:單元測試之SmtpClientASP.NETclient
- ASP.NET 系列:單元測試之StructureMapASP.NETStructREM
- iOS Framework 單元測試(一)-- XCTestsiOSFramework
- Android單元測試(一):前言Android
- Golang 學習——基於 Gin 框架進行 httptest 單元測試Golang框架HTTP
- ASP.NET 系列:單元測試之Log4NetASP.NET
- [iOS單元測試系列]單元測試編碼規範iOS
- 微軟為VS.net新增單元測試功能微軟
- Flutter 單元測試Flutter
- Go單元測試Go
- 單元測試工具
- iOS 單元測試iOS
- 前端單元測試前端
- golang 單元測試Golang
- PHP 單元測試PHP
- phpunit單元測試PHP
- JUnit單元測試
- unittest單元測試
- Junit 單元測試.
- 單元測試真
- 一文看懂golang單元測試Golang
- WebAPI的一種單元測試方案WebAPI
- 學習Karma+Jasmine+istanbul+webpack自動化單元測試ASMWeb