您的位置:首页 > 其它

NUnit的测试方法与VS中启用它来调试

2012-05-16 17:02 274 查看
在VS中加入单元测试框架:

右键项目“属性“来到“调试”

启动操作,选择“启动外部程序”选择NUnit程序

C:\Program Files\NUnit 2.5.9\bin\net-2.0\nunit.exe

这样就可以在生成的时候,自动启用NUnit进行调试

Not a Test Assembly

The assembly was not built with any known testing framework

出现上述这种错误,确认有没有加载using NUnit.Framework;

using NUnit.Framework;
namespace NUnitTest
{
[TestFixture]
public class Class1
{
[Test]
public void Add()
{
int a = 1;
int b = 2;
int sum = a + b;
Assert.AreEqual(sum, 3);
}
}
}
标识类的特性为TestFixture,以及方法的特性标识为Test这样就可以测试了,其中Assert是进行测验的一个类,里面有许多的静态方法。

当然不标识类的特性也可以测试,不标识方法的特性,调试的时候就不出现。

测试的效果图:





如果把上面重复的公用,怎么做呢,如下:

private int a;
private int b;
[SetUp]
public void InitializeOperands()
{
a = 1;
b = 2;
}
使用SetUp来标识即可。

如果想忽略这个方法

添加[Ignore]特性,这个方法还是会显示,只是会忽略测试,进度条是黄色的。

其他的一些方法

TestFixtureSetUp打开数据库连接,数据共享
TestFixtureTearDown关闭数据库连接, 数据共享
SetUp或TearDown

[Category("加法")]把一些方法分组。
异常的捕获
[ExpectedException(typeof(DivideByZeroException))]
public void DivideByZero()
{
int zero = 0;
int result = a / zero;
Assert.Fail("Exception");
}
如果存在异常就通过,所以上面这个通过测试。

如果修改为[ExpectedException(typeof(InvalidOperationException))]
那么就会报错,尝试除以0,这是不允许的。

好了,综合演示一下

namespace NUnitTest
{
[TestFixture]
public class Class1
{
[TestFixtureSetUp]
public void FixtureSetUp()
{
Console.Out.WriteLine("FixtureSetUp");
}
[TestFixtureTearDown]
public void FixtureTearDown()
{
Console.Out.WriteLine("FixtureTearDown");
}
[SetUp]
public void SetUp()
{
Console.Out.WriteLine("SetUp");
}
[TearDown]
public void TearDown()
{
Console.Out.WriteLine("TearDown");
}
[Test]
public void Test1()
{
Console.Out.WriteLine("Test 1");
}
[Test]
public void Test2()
{
Console.Out.WriteLine("Test 2");
}
}
}

运行结果:

FixtureSetUp
***** NUnitTest.Class1.Test1
SetUp
Test 1
TearDown
***** NUnitTest.Class1.Test2
SetUp
Test 2
TearDown
FixtureTearDown
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: