Tony Gong的技术Blog  
技术旅途中蹒跚的行者

这篇学习笔记主要解释一下“NUnit学习笔记1”中举的例子,说明一下NUnit的主要用法。

上个例子中,主要结构如下:

其中Class1内包含了求最大值的方法,也是我要测试的类。
Class1Test就是用来测试Class1中方法的测试类。

流程:
1,要使用NUnit,先必须添加nunit.framework引用:
在Solution Explorer中的References上按右键,添加引用,然后按browse,在NUnit目录下找到nunit.framework.dll,添加
2,在测试类Class1Test的头上添加Imports NUnit.Framework;c#是using NUnit.Framework;
3,标示测试类,在测试类上添加<TestFixture()>这个Attribute ,然后添加一个无参的构造函数(c#为必须,vb.net不必须),如下:

1 Imports NUnit.Framework
2 
3 <TestFixture()> _
4 Public Class Class1Test
5     Public Sub New()
6 
7     End Sub
8 
9 End Class


4,然后就可以添加一个测试方法了,测试方法前面加上<test()>的Attribute

1     <Test()> _
2     Public Sub FindMaxTest()
3         '定义一个数组
4         Dim list1 As Int32() = {13104}
5 
6         Dim my As New Class1
7         '测试数组list1中的最大整数是不是10。
8         Assert.AreEqual(4, my.FindMax(list1))
9     End Sub
其中,Assert.AreEqual()就是NUnit提供的一个断言,用来判断前后2个值是否相等。如果相等,则测试通过,否则测试失败。

5,如此,一个单元测试就算是写好了,可以使用了(当然,测试用例还不够完善)。
接下去运行这个单元测试:先编译solution,生成一个exe或dll的程序集,打开nunit-gui.exe,点“file。。。”----〉“Open。。。”,然后,选中刚才生成的程序集,出现如下图:


6,然后按Run,就可以进行测试了,如下图:


出现一个大大的红色,NUnit里面,红色代码test失败,绿色代表成功,黄色代码忽略。
这里出现红色错误,是由于我故意在测试函数里面写错的:
        Assert.AreEqual(4, my.FindMax(list1))

这里的最大值,应该是10,测试函数改成如下代码:

1     <Test()> _
2     Public Sub FindMaxTest()
3         '定义一个数组
4         Dim list1 As Int32() = {13104}
5 
6         Dim my As New Class1
7         '测试数组list1中的最大整数是不是10。
8         Assert.AreEqual(10, my.FindMax(list1))
9     End Sub


重新编译solution,NUnit不必重起,它会自动装载最新的程序集,再按NUnit的Run,如下图:

7,然后,让我们完善一下我们的测试函数:

 1    <Test()> _
 2    Public Sub FindMaxTest()
 3        '定义一个数组
 4        Dim list1() As Int32 = {13104}
 5        Dim list2() As Int32 = {13410}
 6        Dim list3() As Int32 = {10314}
 7        Dim list4() As Int32 = {-2-1-3}
 8
 9        Dim my As New Class1
10        '测试数组list1中的最大整数是不是10。
11        Assert.AreEqual(10, my.FindMax(list1))
12
13        '测试边界值
14        Assert.AreEqual(10, my.FindMax(list2))
15        Assert.AreEqual(10, my.FindMax(list3))
16
17        '测试负数数组,数组中最大值应该是-1
18        Assert.AreEqual(-1, my.FindMax(list4))
19
20    End Sub

新增加了3个断言,用来测试边界值,负数。
8,Run,如下图:

哈哈,还是绿灯阿,我们的求最大数的方法就大致测试完成了。

下面列出一下常用的断言:
常用的NUnit断言有:

method

usage

example

Assert.AreEqual(object expected, object actual[, string message])

验证两个对象是否相等

Assert.AreEqual(2, 1+1)

Assert.AreSame(object expected, object actual[, string message])

验证两个引用是否指向同意对象

object expected = new object();

object actual = expected;

Assert.AreSame(expected, actual)

Assert.IsFalse(bool)

验证bool值是否为false

Assert.IsFalse(false)

Assert.IsTrue(bool)

验证bool值是否为true

Assert.IsTrue(true)

Assert.IsNotNull(object)

验证对象是否不为null

Assert.IsNotNull(new object())

Assert.IsNull(object)

验证对象是否为null

Assert.IsNull(null);

posted on 2006-04-24 11:00  Tony.Gong  阅读(2296)  评论(0编辑  收藏  举报