本文主要是介绍单元测试——Using NUnit,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【简介】
在.NET平台下进行单元测试,我们首先想到的应该是NUnit。NUnit是一个专门针对.NET的单元测试框架,也是.NET平台上使用得最为广泛的测试框架之一。
在NUnit之前,有针对Java的JUnit,针对C++的CPPUnit,它们都属于xUnit家族。NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等,最重要的一点是它适合于所有.NET语言。
关于NUnit的安装以及简单运用,在这里不做过多的描述。详情请移步《单元测试——NUnit工具安装及简单运用》
下边,我们先看一个非常简单的测试用例(TestCase):
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong>[Test]public void AdditionTest()
{int expectedResult = 2;Assert.AreEqual(exptectedResult, 1 + 1);
}</strong></span>
也许,这个TestCase在很多人看来很低级,但是我的理解并不是这样。NUnit本来就是编写单元测试的简易框架,单元测试的复杂之处在于如何在实际项目中应用和实施,而不是徘徊于如何使用NUnit。
【Demo】
下边,我们通过一个Demo,来了解一下在单元测试中如何使用NUnit。
使用NUnit做单元测试,可以使用它的客户端,也可以在VS中安装“Nunit Test Adapter”插件,这样测试的结果可以在VS中可视化。
在本文中我们使用Nunit Test Adapter插件,来查看测试结果。
加减乘除的Demo框架基本上是这样的:
1、首先,新建一个类库:Caluclate。然后编写其中的代码(加减乘除的例子)
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Caluclate
{//加减乘除运算实例public class Calculate{//控制台应用程序,程序的入口static void Main(string[] args){}//无参构造函数public Calculate() { }#region 加减乘除运算的具体实现/// <summary>/// 加法/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <returns></returns>public int Add(int a, int b){return a + b;}/// <summary>/// 减法/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <returns></returns>public int Subduction(int a, int b){return a - b;}/// <summary>/// 乘法/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <returns></returns>public int Multiply(int a, int b){return a * b;}/// <summary>/// 除法/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <returns></returns>public int Divide(int a, int b){if (b == 0){Console.WriteLine("除数不能为零!");return 0;}else{return a / b;}}#endregion}
}
</strong></span>
2、然后是测试类(CaluclateTest)
在测试类CaluclateTest中,我们需要添加对NUnit的引用:
然后进行测试类CaluclateTest代码的编写:
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework; //添加对NUnit服务的引用
using Caluclate; //导入“被测试类”的命名空间namespace CaluclateTest
{[TestFixture] //单元测试的关键字//作为一个测试类,//1、必须是public,否则NUnit看不到它的存在//2、必须有一个缺省的构造函数,否则NUnit不会构造它public class CaluclateTest{[Test] //Test作为标识符、关键字//测试方法必须没有参数,并且不返回任何参数,且必须为public。public void TestAdd(){//对象实例化Calculate add = new Calculate();//利用测试数据,对加法进行测试int result = add.Add(2, 3);//设置断言:5为expected期望值;result为actual真实值Assert.AreEqual(5, result);}//[Test]可以扩展写成[Test(Description="")],对本测试进行简单的描述[Test(Description = "减法Subduction()测试")]public void TestSubduction(){Calculate subduction = new Calculate();int result = subduction.Subduction(8, 5);//我们在这里,将4设置成我们的expected期望值//Assert.AreEqual(4, result);Assert.AreEqual(3,result);}}
}
</strong></span>
3、然后,进行测试
测试代码中,关于断言Asser的使用,可以参考下边这张表,表中是经常用到的一些断言。
在这里,只是抛砖引玉,更多关于断言的东西,请移步《NUnit断言大全》
【后记】
原来没有接触单元测试之前,那仿佛好像是一个很遥远、很神秘的东西,一直无法触及。经过最近几天的了解,发现单元测试并不是我们想象中的那样,我们要想写出出色的代单元测试必须陪伴我们左右。
陌生的东西不可怕,因为我们有一颗去探索它的心。
这篇关于单元测试——Using NUnit的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!