2.6 [Test]屬性
這個屬性是有用處的,因為它表明這是一個測試方法。
[TestFixture]
public class TestSimpleCalculator
{
SimpleCalculator myMath;
private double a; // a = 3.0
private double b; // b = 5.0
// 這是一個測試方法
[Test]
public void Add()
{
Assert.AreEqual( a, 3.0 ); // 返回真
Assert.AreEqual( b, 5.0 );// 返回真
a = myMath.Add( a, b );
Assert.AreEqual(a, 7.0, "The expect result is 7, and the actual result is 8");// 返回假,并且會打印出錯誤信息
}
}
2.7 [ExpectedException(typeof(OneSupportedException))] 屬性
這個屬性其實非常有用處,它表明這個函數(shù)會拋出一個預(yù)期的異常。在一個項目中,異常的處理是不可避免的。如果異常處理機制不好的話,會給程序帶來相當(dāng)大的混亂。也許你的程序充滿了try,catch,但是確總也捕捉不到自己想要的異常;靵y的異常對于程序員來說是災(zāi)難。
[Test]
[ExpectedException(typeof(InvalidOperationException))]
public void ExpectAnException()
{
throw new InvalidCastException();// 這個地方拋出了非預(yù)期的異常,所以測試方法失敗。
}
2.8 [Ignore("name")]屬性
這個屬性也挺有用處,它表示這個測試方法會被忽略掉。也許你的代碼進(jìn)行了一些升級,以前的測試方法已經(jīng)不再重要,但是你仍然希望保留它們。那么你盡可以把它們標(biāo)志成Ignore,然后統(tǒng)一放到一個文件或者Region中,以做存檔之用。
[Test]
[Ignore("ignored test")]
[ExpectedException(typeof(InvalidOperationException))]
public void IgnoredTest()
{
throw new Exception(); // 如果可以運行這個測試方法,那么這個方法不會通過測試,但是現(xiàn)在它已經(jīng)被忽略掉了。
}
2.9 [Platform("SupportedPlatform")]屬性
這個屬性也相當(dāng)實用,它表明這個測試方法會運行在指定的平臺上。大家都知道,.Net Framework有幾個版本,還有各種版本的Windows系統(tǒng)。不同的版本對于某些類庫或者API的支持是不一樣的。比如WMI查詢語句的某些用法在Win2000上無法通過測試。某些類庫在.net1.1中無法找到,如果指定了平臺,一切都變得井井有條了。
[Test]
[Platform("NET-1.1")]
//更多支持的平臺請查閱NUnit的文檔
public void DotNetOneOneTests()
{
Assert.AreEqual( "This case run on .Net1.1", "This method will not be executed" ); // 這個測試方法只會運行在.Net1.1的平臺下。
}