技术开发 频道

新.Net开发必备十大工具详解之NUnit

特性简介

   通过上面的一个简单的示例,我们已经知道了如何使用NUnit去做单元测试,在NUnit中提供了大量的Attribute来供我们使用,总结如下:
 




   接下我们对这些特性做一下详细的介绍。

Setup和TearDown

   我们再修改一下Calculator类,添加一个Mul的方法,如下代码所示:
 

public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}

public int Mul(int a, int b)
{
return a * b;
}
}


   同样要对Mul方法编写单元测试,代码如下所示:
 

[Test]
public void TestAdd()
{
Calculator cal = new Calculator();
Assert.IsNotNull(cal);

int expectedResult = 5;
int a = 2;
int b = 3;
int actualResult = cal.Add(a,b);
Assert.AreEqual(expectedResult, actualResult);
}

[Test]
public void TestMul()
{
Calculator cal = new Calculator();
Assert.IsNotNull(cal);

int expectedResult = 6;

int a = 2;
int b = 3;
int actualResult = cal.Mul(a, b);
Assert.AreEqual(expectedResult, actualResult);
}


   大家可能已经看出问题来了,这里的TestAdd和TestMul方法中有不少的代码都是重复的,因此我们能够把它们放在一个公用的方法中呢?答案自然是可以的,这时我们就需要用到Setup和TearDown特性。Setup方法用户初始化测试用例数据,而TearDown方法用来测试用例资源回收。如我们可以修改测试类代码如下所示:
 

[TestFixture]
public class CalculatorTest
{
private int a;
private int b;

[TestFixtureSetUp]
public void Initialization()
{
a = 2;
b = 3;
}

[Test]
public void TestAdd()
{
Calculator cal = new Calculator();
Assert.IsNotNull(cal);

int expectedResult = 5;
int actualResult = cal.Add(a,b);
Assert.AreEqual(expectedResult, actualResult);
}

[Test]
public void TestMul()
{
Calculator cal = new Calculator();
Assert.IsNotNull(cal);

int expectedResult = 6;
int actualResult = cal.Mul(a, b);
Assert.AreEqual(expectedResult, actualResult);
}
}


   同样我们可以在TestFixtureTearDown方法中做一些资源回收的工作。细心的朋友注意到我们上面介绍的特性中除了TestFixtureSetup和TestFixtureTearDown外,还有一组Setup和TearDown方法,这两组方法的使用非常相似,如下代码所示:
 

[SetUp]
public void EachSetup()
{
// ......
}

[TearDown]
public void EachTearDown()
{
// ......
}

[TestFixtureSetUp]
public void OneTimeSetup()
{
// ......
}

[TestFixtureTearDown]
public void OneTimeTearDown()
{
// ......
}

1
相关文章