写个VS2008使用单元测试NUnit的方法,希望对大家有帮助
写个VS2008使用NUnit的方法,希望对大家有帮助。
1.NUnit的介绍
NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员.最初,它是从JUnit而来.现在的版本是2.2.接下来我所用的都是基于这个版本。
NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig, 后来开发团队逐渐庞大起来.在开发过程中, Kent Beck 和Erich Gamma2位牛人也提供了许多帮助.看来对于NUnit还真是下了一番力气了.JNUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NET的特性,比如反射,客户属性等等.
最重要的一点是它适合于所有.NET语言.
如果你还没有下载,可以到http://www.nunit.org/index.php?p=download去下载.
上面有很多版本,你可以使用最新的NUnit2.5 Alpha 4也可也用较为稳定的NUnit 2.4.8本文使用的是前者。
2.安装NUnit
NUnit的安装还是比较简单的,基本是按照默认的选项就可以顺利安装完成。
3.如何在VS.NET中应用NUnit
首先确定你的VS是好的正确安装的,这里我就不进行详细介绍了网上挺多的。
我将举个例子,一步一步演示如何去使用NUnit.
第1步.为测试代码创建一个Visual Studio工程。
在Microsoft Visual Studio .NET中,让我们开始创建一个新的工程。选择Visual C#工程作为工程类型,Class Library作为模板。将工程命名为NUnitQuickStart.图4-1是一个描述本步骤的Visual Studio .NET。
创建第一个NUnit工程
第2步.增加一个NUnit框架引用
在VS.NET里创建这个例子时,你需要增加一个NUnit.framework.dll引用,如下:
在Solution Explorer窗口,右击点击您的工程选择Add Reference,然后选择增加引用NUnit.framework组件,在Add Reference对话框里面有2个NUnit.framework.dll引用,你可以参看下面的图片选择较新的版本或者根据自己的情况选择,如果看不到NUnit.framework.dll等引用,可以试着重启VS或者重新安装NUnit。
第3步.为工程加一个类.
为工程加一个NumbersFixture类。这里是这个例子的代码。
using System;
using NUnit.Framework;
namespace NUnitQuickStart
{
[TestFixture]
public class NumersFixture
{
[Test]
public void AddTwoNumbers()
{
int a = 1;
int b = 2;
int sum = a + b;
Assert.AreEqual(sum, 3);
}
}
}
第4步.建立你的Visual Studio 工程,使用NUnit-Gui测试
为了在Visual Studio .NET中自动运行NUnit,你需要建立NUnit作为你的启动程序:
在 Solution Explorer里右击你的NunitQuickStart工程。
在弹出菜单中选择Properties,会打开VS的程序设置见面在左侧选择Debug,在右侧的Start Action 中点选Start external program:点击右侧的浏览按钮(...)浏览到NUnit的安装目录下的C:\Program Files\NUnit 2.5\net-2.0\nunit.exe这个文件。如果你前面加入引用时选择的是1.0这里就改为C:\Program Files\NUnit 2.5\net-1.1\nunit.exe保存后即可关闭。
第5步.编译运行测试.
现在你可以直接点击Debug按钮进行测试了点击F5即可。此时VS会自动启动NUnit,但是你会发现NUnit什么都没有显示,首次执行时必须选择要测试的项目因此点击NUnit的File\Open Project 软件会自动浏览到你的工程目录中,这时你选择和你文件名相同的那个DLL文件即可我这里选择了NumbersFixture.dll,然后点击右边的Run一次测试就完成了。当改变了要测试的文件时记得也要再选择这个目录一般是:"工程目录\解决方案名称\工程名\bin\Debug\工程名.dll"
我这里给大家介绍的主要是VS中NUnit的配置方法,至于使用我建议大家可以参考一下地址
http://www.cnblogs.com/confach/archive/2005/06/20/177817.html
http://www.cnblogs.com/sunjie9606/articles/1164024.html