C#程序可以使用NUnit框架进行单元测试,NUnit是.NET语言的一个测试框架,和Java语言的JUnit同属于XUnit。

NUit官方的安装文件有msi的安装程序和不用安装的zip文件。安装msi或者使用zip中的dll可以通过NUit提供的GUI或则命令提示符进行单元测试。这里不详细叙述。

这里我介绍一个VS的插件TestDriven.NET,TestDriven.NET插件是对.NET语言在VS IDE中的一个插件里面集成了一些常用的单元测试框架,当然也包括NUit单元测试框架。所以相对NUit的GUI,TestDrive.NET框架直接集成到VS中,用起来跟方便。

首先到官网下载TestDrive.NET,有针对个人的免费版,然后进行安装,默认安装到C盘的Program Files(64位系统默认安装到Program Files(32))。

然后打开VS发现右键菜单多出了Run Test(s)等命令。

下面给出一个操作的实例:

新建工程,写要测试的函数(数组求最大值):

using System;

namespace HelloCSharp
{
class Hello
{
public static int Max(int[] data)
{
int max = Int32.MinValue;
for (int i = 0; i < data.Length; i++)
{
if (data[i] > max)
{
max = data[i];
}
}
return max;
}
}
}


工程引用上右键,选择添加引用,然后在浏览选项卡中,在C盘的TestDrive.NET的安装目录中选择NUit文件夹中的nunit.framework.dll添加引用(NUit文件夹下面有多个版本,选择最高的版本,事情而定)。

然后新建一个类,写单元测试代码:

using System;
using NUnit.Framework;
using HelloCSharp;

namespace HelloCSharp.NUnitTest
{
[TestFixture]
class HelloTest
{
[Test]
public void MaxRun()
{
Assert.AreEqual(Hello.Max(new int[] {0, 2, 1, 5, 3, 7, 9}), 9);
}
}
}



TestFixture特性用于测试类上,Test特性用于测试方法上,使用Asset断言提供的方法进行测试。

只是在Output面板中的输出结果:

------ Test started: Assembly: HelloCSharp.exe ------

1 passed, 0 failed, 0 skipped, took 0.58 seconds (NUnit 2.6.2).