6,ExpectedException
标识该用例所期望抛出的异常
有时候我们知道在特定条件下我们的程序将会抛出某个异常,我们就可以用ExpectedException这个特性在测试代码中验证,程序是否如我们所想的抛出了这个异常。
如,我们那个求最大值的方法,如果传进去一个空的int32数组,应该会抛出一个NullReferenceException异常,为了验证我的猜想,我写了如下测试:
<Test()> _ Public Sub FindMaxTest()Sub FindMaxTest()Sub FindMaxTest()Sub FindMaxTest() '定义一个数组 Dim list1() As Int32 = {1, 3, 10, 4} Dim list2() As Int32 = {1, 3, 4, 10} Dim list3() As Int32 = {10, 3, 1, 4} Dim list4() As Int32 = {-2, -1, -3} Dim my As New Class1 '测试数组list1中的最大整数是不是10。 Assert.AreEqual(10, my.FindMax(list1))
'测试边界值 Assert.AreEqual(10, my.FindMax(list2)) Assert.AreEqual(10, my.FindMax(list3))
'测试负数数组,数组中最大值应该是-1 Assert.AreEqual(-1, my.FindMax(list4)) End Sub
<Test(), ExpectedException(GetType(NullReferenceException))> _ Public Sub TestForException()Sub TestForException() Dim list1() As Int32 Dim my As New Class1 my.FindMax(list1) End Sub |
(C#中为[Test,ExpectedException(Typeof(NullReferenceExcepton))] )
运行NUnit,如下:
果然如此,程序的确抛出了NullReferenceException。而假如系统没有如我们所料抛出异常,或者抛出的不是此类异常,NUnit则会给我们个红灯笼。