亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

NUnit之Assertion詳解

系統 1974 0

園子里有了不少介紹NUnit的文章,想到以前本人在上一家公司時也寫過內部的PPT介紹,故將其整理、修改,并將分成以下三部分分別進行介紹:

1:NUnit之Assertion詳解

2:NUnit之Attribue詳解

3:NUnit擴展

其中1、2部分比較簡單,僅供對NUnit不太了解的網友參考,有興起對NUnit進行擴展的網友可以關注第三部分。

??

NUnit之Assertion詳解

?

NUnit是.Net平臺的測試框架,廣泛同于.Net平臺的單元測試和回歸測試中。

任何xUnit工具都使用斷言進行條件的判斷,NUnit自然也不例外,與其它的xUnit(如Junit、phpUnit、pythonUnit)相比,由于大量使用了Generic、Attribute等語言特征,NUnit提供了更為方面、靈活的測試方法,下面先介紹一下斷言。

Nunit一共有四個類斷言類,分別是Assert、StringAssert、FileAssert和DirectoryAssert,它們都在NUnit.Framework命名空間,其中Assert是常用,也是我們最熟悉的,而另外三個斷言類,顧名思義,分別對應于字符串的斷言、文件的斷言和目錄的斷言,理論上,僅Assert類就可以完成所有條件的判斷,然而,如果合理的運用后面的三個斷言,將使代碼更加簡潔、美觀,也更加便于理解和維護。

?

一:Assert類

對于我們通常的單元測試代碼,Assert類中的靜態方法就可以完成,其中大家最熟悉的應該是Assert. AreEqual()方法,其實,除了AreEqual,NUnit還提供了眾多的比較方式,滿足不同的代碼要求。

??

1:相等/不相等判斷

AreEqual:判斷兩個值相等

AreNotEqual:判斷兩個值不相等

示例:

      Int a=
      
        1
      
      
Assert.AreEqual(a, 1 ); // 通過判斷
Assert.AreEqual(a, 2 ); // 不能通過判斷

?

注意 ,除了AreEqual/ AreNotEqual,下面幾乎所有的方法都支持多態(多種數據類型),以及多參數,除了經常使用的Assert .AreEqual(int a,int b),還有一種典型的參數形式:

      Assert.AreEqual(
      
        int
      
       a,
      
        int
      
       b,
      
        string
      
      
        message
      
      );
      
或者 Assert.XXX( int a, int b, string message );

其中第三個參數是條件不通過時輸出的信息,以便于錯誤的定位

對于double和decimal類型,這兩個方法還支持比較時的浮點誤差

例如以下代碼:

      
        double
      
       a = 
      
        1.1
      
      ;
      
double b = 1.11 ;
double c = 0.1 ;
Assert.AreEqual(a, b, c); // 通過判斷
c= 0.01 ;
Assert.AreEqual(a, b, c); // 不能通過判斷


2:類的判斷

AreSame:判斷兩個對象相等

AreNotSame:判斷兩個對象不相等

Contains:判斷是否是否某對象

示例:

      List<
      
        string
      
      > list = 
      
        new
      
       List<
      
        string
      
      >();
      
list.Add( " a " );
list.Add( " b " );
Assert.Contains( " a " , list); // 通過判斷
Assert.Contains( " aa " , list); // 不能通過判斷

?

3:條件判斷

IsTrue:判斷條件為真

True:同上

IsFalse:判斷條件為假

False:同上

IsNull:判斷是否為空

Null:同上

IsNotNull:判斷不為空間

NotNull:同上

IsNaN:判斷數值是Nan

IsEmpty/IsNotEmpty:判斷字符串是否為空/不為空

IsEmpty/IsNotEmpty:判斷集合是否為空/不為空

示例:

      
        int
      
       a=
      
        100
      
      ;
      
Assert. IsTrue(a== 100 ); // 通過判斷
Assert. True(a== 100 ); // 通過判斷

?

4:比較判斷

Greater:大于

GreaterOrEqual:大于等于

Less:小于

LessOrEqual:小于大于

示例:

      
        int
      
       a = 
      
        100
      
      ;
      
Assert.Greater(a, 99 );
Assert.GreaterOrEqual(a, 100 );

?

5:類型判斷

IsInstanceOfType/ IsNotInstanceOfType:是/不是某個類的實例(從2.5之后支持泛型)

例如:

      
        public
      
      
        class
      
       Person
      
{
public string name { set ; get ;}
}

Person p = new Person();
p.name = " a " ;
Assert.IsInstanceOf( typeof (Person), p); // 通過判斷
Assert.IsInstanceOf( typeof (System.String), p); // 不能通過判斷

?

6:異常判斷

Throws:應該拋出某類型的異常

DoesNotThrow:不應該拋出某類型的異常

?

7:其它常用的方法

Pass:強行讓測試通過

Fail:強行讓測試失敗

Ignore:忽略該測試方法

Inconclusive:未驗證該測試

?

二:StringAssert類

StringAssert用于String類型的斷言判斷:

StringAssert.Contains:是否包含子串

StringAssert.StartsWith:是否以某子串開頭

StringAssert.EndsWith:是否以某子串結尾

StringAssert.AreEqualIgnoringCase:兩個字符串是否在不區分大小寫時相等

StringAssert.IsMatch:是否匹配,(使用正則表達式進行字符串比較)

示例:

      
        string
      
       s1 = 
      
        "
      
      
        abc
      
      
        "
      
      ;
      

StringAssert.Contains( " b " , s1);
StringAssert.StartsWith( " a " , s1);
StringAssert.EndsWith( " c " , s1);

string s2 = " aBc " ;
StringAssert.AreEqualIgnoringCase(s1, s2);

StringAssert.IsMatch( " [a|book] " , " 123 " );

?

三:CollectionAssert類

AllItemsAreInstancesOfType:集合中的各項是否是某某類型的實例

AllItemsAreNotNull:集合中的各項均不為空

AllItemsAreUnique:集合中的各項唯一

AreEqual:兩個集合相等

AreEquivalent:兩個集合相當

AreNotEqual:兩個集合不相等

AreNotEquivalent:兩個集合不相當

DoesNotContain:集合中不包含某對象

IsSubsetOf:一個集合是另外一個集合的子集

IsNotSubsetOf:一個集合不是另外一個集合的子集

IsEmpty:集合為空

IsNotEmpty:集合不為空

IsOrdered:集合的各項已經排序

?

示例:

      List<
      
        int
      
      > a = 
      
        new
      
       List<
      
        int
      
      >();
      
List< int > b = new List< int >();

CollectionAssert.IsEmpty(a);

for ( int i = 1 ; i <= 10 ; i++)
{
a.Add(i);
b.Add(i);
}

CollectionAssert.AreEqual(a, b);
CollectionAssert.IsOrdered(a);

b.Remove( 1 );
CollectionAssert.IsSubsetOf(b, a);

CollectionAssert.AreEqual(a, b);

?

后記:關于NUnit的斷言就大概介紹這些,其實,不僅僅是測試人員,.Net程序員也應該熟悉掌握NUnit,以保證自己的代碼質量,關于NUnit的進一步使用,將陸續介紹。

由于本人水平有限,不妥之處,歡迎大家批評指正,謝謝!



NUnit之Assertion詳解


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中文精品视频一区二区在线观看 | 欧美视频一区二区三区 | 久久亚洲网站 | 久草在线观看资源 | 亚洲精品一区二区三区中文字幕 | 国产综合色香蕉精品五月婷 | 亚洲一片 | 免费看欧美日韩一区二区三区 | 青草视频.com | 2019av在线视频| 九九影视理论片在线播放 | 天天操天天干天天舔 | 美女视频很黄很暴黄是免费的 | 亚洲伦理中文字幕 | 欧美一级毛片久久精品 | 国产精品乱码高清在线观看 | 亚洲悠悠色综合中文字幕 | 中文字幕在线免费观看 | 看大片全色黄大色黄 | 久久r热这里有精品视频 | 久久国产影院 | 亚洲日本中文字幕在线2022 | 色网站在线 | 国产精品久热 | se94se亚洲欧美在线 | 99在线精品日韩一区免费国产 | 欧美伦理一区 | 亚洲精品久久久 | 免费视频一区二区性色 | 爱爱视频免费在线观看 | 成年人网站免费 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 神马不卡 | 久久国产美女免费观看精品 | 在线观看国产一区 | 狠狠激情五月综合婷婷俺 | 国产伊人影院 | 国产精品99久久久久久www | 国产欧美日韩亚洲精品区2345 | 日韩欧美亚洲中字幕在线播放 | 亚欧在线精品免费观看一区 |