程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 測試框架nunit之assertion斷言應用詳解

測試框架nunit之assertion斷言應用詳解

編輯:C#入門知識

測試框架nunit之assertion斷言應用詳解。本站提示廣大學習愛好者:(測試框架nunit之assertion斷言應用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是測試框架nunit之assertion斷言應用詳解正文


任何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);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved