NUnit学习笔记2

这篇学习笔记主要解释一下“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()  =  { 1 3 10 4 }
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。。。”,然后,选中刚才生成的程序集,出现如下图:
NUnit学习笔记2_第1张图片

6,然后按Run,就可以进行测试了,如下图:
NUnit学习笔记2_第2张图片

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

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

1       < Test() >  _
2       Public   Sub  FindMaxTest()
3           ' 定义一个数组
4           Dim  list1  As  Int32()  =  { 1 3 10 4 }
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学习笔记2_第3张图片
哈哈,还是绿灯阿,我们的求最大数的方法就大致测试完成了。

下面列出一下常用的断言:
常用的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);

你可能感兴趣的:(NUnit学习笔记2)