DotNet下NUnit的使用(2)—- 第一个NUnit工程
准备工作
1. 打开visual studio, 新建一个“Class Library”工程,命名为“NUnitDemo”
2. 在工程中新建一个Class:“FirstNUnitClass”, 在类中添加一个public的方法:GetBonous(int level), 最终类的内容:
public int GetBonous(int level)
{
int bonous = 0;
switch (level)
{
case 1:
bonous = 1000;
break;
case 2:
bonous = 2000;
break;
case 3:
bonous = 3000;
break;
default:
bonous = 0;
break;
}
return bonous;
}
在当前solution下 新建一个”Class Library”工程,命名为“NUnitDemoTest”
将项目”NUnitDemo”添加到Test工程的引用里面,将nunit.framework.dll, nunit.core.dll, nunit.fixtures.dll这三个文件的路径引用也添加到工程的引用里面。 新建一个类”FirstNUnitDemoTest”, 敲入一下内容:
[TestFixture]
public class FirstNUnitDemoTest
{
private FirstNUnitDemo _firstNunitDemo;
public FirstNUnitDemoTest()
{
_firstNunitDemo = new FirstNUnitDemo();
}
[Test]
public void GetBonousLevel1Test()
{
int level = 1;
int expectBonous = 1000;
int actualBonous = _firstNunitDemo.GetBonous(level);
Assert.AreEqual(expectBonous, actualBonous, "Bonous");
}
[Test]
public void GetBonousLevel2Test()
{
int level = 2;
int expectBonous = 2000;
int actualBonous = _firstNunitDemo.GetBonous(level);
Assert.AreEqual(expectBonous, actualBonous, "Bonous");
}
[Test]
public void GetBonousLevel3Test()
{
int level = 3;
int expectBonous = 3000;
int actualBonous = _firstNunitDemo.GetBonous(level);
Assert.AreEqual(expectBonous, actualBonous, "Bonous");
}
[Test]
public void GetBonousLevel4Test()
{
int level = 4;
int expectBonous = 0;
int actualBonous = _firstNunitDemo.GetBonous(level);
Assert.AreEqual(expectBonous, actualBonous, "Bonous");
}
[Test, ExpectedException(typeof(ArgumentException), ExpectedMessage = "Invalid argument.")]
public void GetBonousLevel0Test()
{
int level = 0;
_firstNunitDemo.GetBonous(level);
}
}
在solution的根目录下面新建两个文件, NUnitDemo.Test.nunit 和 NUnitDemo.Test.config, 内容分别为: 文件NUnitDemo.Test.nunit:
<NUnitProject> <Settings appbase="." /> <Config name="Default" binpathtype="Auto"> <assembly path="NUnitDemoTestbinDebugNUnitDemoTest.dll" /> </Config> </NUnitProject>
注意要把NUnitDemoTest.dll这个文件的路径设置到您对应的磁盘目录。
文件NUnitDemo.Test.config:(注:该文件相当于web站点的web.config文件,数据库连接等信息会出现在这里,这里就不列出了)。
用NUnit.exe工具打开NUnitDemo.Test.nunit,点击“运行”,看看结果。。。
对NUnit的Attribute的介绍:
1. TestFixture: 这个attribute用于需要测试的类,是一个用于类的attribute,在含有unit-tests的类上都要加上这个attribute,不然您将看不到任何的测试用例^_^.
2. Test: 这是一个用于方法(method)d哦attribute, 用在您需要当作unit-test的method上,如果没有这个标签,那么这个方法将不会出现在unit-tests列表中。
3. 结果验证:Assert.*方法可以用来验证方法运行的结果是否与您期待的结果一直,这个方法的具体列表和说明请参阅http://www.nunit.org/index.php?p=assertions&r=2.4.8
到这里为止,我们看到的知识NUnit最基本的功能,还有其他常用的attribute,例如Setup,TearDown等也是NUnit中很重要而且也很常用的attribute,如果想熟练的使用NUnit,学习这两个attribute也是必不可少的,混合使用这连个attribute可以解决例如“对数据库中的数据进行unit-test的时候不影响原有数据”等一系列的功能。

我来说两句