TestCase特性有兩個效果,包括標記一個方法使用參數而且在調用的時候提供內置數據。示例以下,本示例會使用不一樣數據集執行3次:html
[TestCase(12,3,4)] [TestCase(12,2,6)] [TestCase(12,4,3)] public void DivideTest(int n, int d, int q) { Assert.AreEqual( q, n / d ); }
Note:.net特性的限制了參數類型,NUnit會在提供給測試用力前嘗試將提供的值用Convert.ChangeType()進行轉換。ide
在一個測試方法上能夠屢次運用TestCase特性,TestCase特性還能夠使用FactoriesAttribute等特性來提供數據。測試
經過使用Result參數,測試用例能夠有更簡單.net
[TestCase(12,3, Result=4)] [TestCase(12,2, Result=6)] [TestCase(12,4, Result=3)] public int DivideTest(int n, int d) { return( n / d ); }
在上面的示例中,NUnit會檢查方法返回值是否與提供的Result參數值相等。htm
TestCaseAttribute還提供一些列其餘屬性:blog
Description:描述測試用例詳情排序
ExpectedException:指按期望拋出的異常ip
ExpectedExceptionName:指按期望拋出異常的全名ci
ExpectedMessage:指按期望拋出異常的信息get
Explict:設置爲true標記測試用例爲顯示執行,用Reason來詮釋原因
Ignore:設置爲true用於指定忽略測試用例,用Reason來詮釋原因
IgnoreReason:指定忽略測試用例及原因,等同於同時使用Ignore && Reason。注意:本特性會在之後版本中移除
MatchType:MessageMatch枚舉類型,指定測試指望信息(詳情見ExpectedExceptionAttribute)
Reason:指定不執行測試用例的原因,結合Ignore或Explicit特性使用
Result:指定測試方法指望的返回值,返回值類型必須是可兼容的
TestName:爲測試用例指定一個名稱,若是不指定會根據測試方法及參數自動生成。
執行順序:
在NUnit2.5,會根據字母少順序排序及執行。從NUnit2.5.1開始,測試用例不會排序,會根據發行的順序進行執行。這個發現的順序不是根據特性字典的順序來排列而且會根據不一樣的編譯器及CLR的版本不一樣而不一樣。
結果就是在一個測試方法中,TestCase特性出現屢次或者其餘提供數據的特性與TestCase特性一塊兒使用,測試用例的順序是不明確的。