下面簡單介紹一下上邊用到的靜態(tài)類NUnit.Framework.Assert。該類主要包含20個方法:
1.AreEqual()和AreNotEqual()方法,用來查看兩個對象的值是否相等或不等,與對象比較中使用的Equals()方法類似。
2.AreSame()和AreNotSame()方法,用來比較兩個對象的引用是否相等或不等,類似于通過“Is”或“==”比較兩個對象。
3.Contains()方法,用來查看對象是否在集合中,集合類型應(yīng)與System.Collections.IList兼容。示例:
Dim o As New Object
Dim al As New ArrayList
al.Add(o)
Assert.Contains(o, al)
4.Greater()和Less()方法,用來比較兩個數(shù)值的大小,前者相當于大于號(>),后者相當于小于號(<)。
5.IsInstanceOfType()和IsNotInstanceOfType()方法,用來判斷對象是否兼容于指定類型。示例:
Dim t As Type = New Object().GetType
Dim s As String = ""
Assert.IsInstanceOfType(t, s)
由于Object是.net中所有類型的基類,String類型兼容于Object,因此這個示例是能夠運行通過的。而下邊這個示例運行將是失敗的:
Dim t As Type = New ArrayList().GetType
Dim s As String = ""
Assert.IsInstanceOfType(t, s)
6.IsAssignableFrom()和IsNotAssignableFrom()方法,用來判斷對象是否是指定類型的實例。示例:
Dim t As Type = New Object().GetType
Dim s As String = ""
Assert.IsAssignableFrom(t, s)
這個示例與之前的示例是一樣的,但由于字符串s不是Object類型的,因此無法運行通過。而下邊這個實例可以運行通過:
Dim t As Type = New String("").GetType
Dim s As String = ""
Assert.IsAssignableFrom(t, s)
7.IsFalse()和IsTrue()方法,用來查看變量是是否為false或true,如果IsFalse()查看的變量的值是false則測試成功,如果是true則失敗,IsTrue()與之相反。
8.IsNull()和IsNotNull()方法,用來查看對象是否為空和不為空。
9.IsEmpty()和IsNotEmpty()方法,用來判斷字符串或集合是否為空串或沒有元素,其中集合類型應(yīng)與ICollection兼容。
10.IsNaN()方法,用來判斷指定的值是否不是數(shù)字。
11.Fail()方法,意為失敗,用來拋出錯誤。我個人認為有兩個用途:首先是在測試驅(qū)動開發(fā)中,由于測試用例都是在被測試的類之前編寫,而寫成時又不清楚其正確與否,此時可以使用Fail方法拋出錯誤進行模擬;其次是拋出意外的錯誤,比如要測試的內(nèi)容是從數(shù)據(jù)庫中讀取的數(shù)據(jù)是否正確,而導(dǎo)致錯誤的原因卻是數(shù)據(jù)庫連接失敗。
12.Ignore()方法,意為忽略,用來忽略后續(xù)代碼的執(zhí)行,用途可以參考Fail()方法。
此外,NUnit還提供了一個專用于字符串的靜態(tài)類NUnit.Framework. StringAssert,該類主要包含4個方法:
Contains()方法,用來查看指定的第二個字符串中是否包含了第一個字符串。
StartsWith ()和EndsWith ()方法,分別用來查看指定的第一個字符串是否位于第二個字符串的開頭和結(jié)尾。
AreEqualIgnoringCase()方法,用來比較兩個字符串是否相等。
下面再看一下C#代碼:
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
namespace NUnitCS
{
[TestFixture]
public class BookTest
{
Book book = null;
[SetUp]
public void Init()
{
Console.WriteLine("測試開始!");
book = new Book();
Console.WriteLine("book對象被初始化!");
}
[Test]
public void testId()
{
book.id = "001"; //設(shè)置id屬性的值為
//使用Assert查看id屬性的值是否為
Assert.AreEqual("001", book.id);
Console.WriteLine("id屬性被測試!");
}
[Test]
public void testName()
{
book.name = "ASP"; //設(shè)置name屬性的值為ASP
//使用Assert查看name屬性的值是否為JSP,這是個必然出現(xiàn)錯誤的測試
Assert.AreEqual("JSP", book.name);
Console.WriteLine("name屬性被測試!");
}