工具简介 NUnit是一款VS下的单元测试利器,目前只支持.Net2.0以下版本,最新版本为NUnit 2.5.0
工具简介
NUnit是一款VS下的单元测试利器,目前只支持.Net2.0以下版本,最新版本为NUnit 2.5.0
下载地址
http://www.nunit.org
NUnit详解
用于单元测试的类必须加TestFixture属性来声明,这样才能被NUnit找到。
用于单元测试的方法必须用Test属性来声明,此方法有以下特点:
1. 访问修饰符必须为public
2. 返回值必须为void
3. 不能有任何参数(下面为示例代码)
4. 任意两个TestMethod之间都是独立的,不能有任何依赖。
Code
using System;
using NUnit.Framework;
namespace NUnitTest
{
[TestFixture]
class CaculatorTest
{
[Test]
public void TestAdd()
{
Caculator cac = new Caculator();
int result = cac.add(1, 3);
Assert.AreEqual(4, result);
}
[Test]
public void TestMinus()
{
Caculator cac = new Caculator();
int result = cac.Minus(1,3);
Assert.AreEqual(-2, result);
}
[Test]
public void TestMulti()
{
Caculator cac = new Caculator();
int result = cac.Mutil(1,3);
Assert.AreEqual(3, result);
}
/// <summary>
/// 当抛出"试图除以零"的异常时,测试通过
/// </summary>
[Test]
[ExpectedException(typeof(DivideByZeroException))]
public void TestDivide()
{
Caculator cac = new Caculator();
int result = cac.Divide(3, 0);
Assert.AreEqual(3, result);
}
}
}
注意到上面每个TestMethod中第一行的代码都是相同,那么有没有一种办法将其提取出来,只操作一次,答案是有的,这就要用到NUnit提供的SetUp属性。
Code
using System;
using NUnit.Framework;
namespace NUnitTest
{
[TestFixture]
class CaculatorTest
{
private int a;
private int b;
private Caculator cac;
/// <summary>
/// 声明为SetUp的方法将在每一个TestMethod运行之前被调用,通常用来初始化测试数据
/// </summary>
[SetUp]
public void Init()
{
a = 10;
b = 2;
cac = new Caculator();
}
/// <summary>
/// 声明为SetUp的方法将在每一个TestMethod运行之后被调用,通常用来销毁测试资源
/// </summary>
[TearDown]
public void Destroy()
{
Console.Write("Resource Destoried!");
}
[Test]
public void TestAdd()
{
int result = cac.add(a, b);
Assert.AreEqual(12, result);
}
[Test]
public void TestMinus()
{
int result = cac.Minus(a,b);
Assert.AreEqual(8, result);
}
[Test]
public void TestMulti()
{
int result = cac.Mutil(a,b);
Assert.AreEqual(20, result);
}
[Test]
public void TestDivide()
{
int result = cac.Divide(a, b);
Assert.AreEqual(5, result);
}
}
}