技术开发 频道

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

   Sub方法将会抛出一个异常,但我们在TestSub中指定了期望抛出的异常NullReferenceException,所以该测试用例仍然能够通过,如下图所示:




   通常而言,我们需要对于期望抛出异常的测试函数写一个专门的测试,来确认该方法在应该抛出异常的地方,确实会抛出我们所期望的异常,对于那些在代码执行中抛出的异常,NUnit会作为测试不通过处理,这一点我们无须担心。

Category

   NUnit用Category的概念提供了标记和运行一个个单独的测试和Fixture的简单方法。使用Category,我们可以通过指定一个名称来把一组方法关联起来,然后在运行时有选择的进行测试。如下面的测试代码:
 

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

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

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

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

[Test,Category("Long"),ExpectedException(typeof(NullReferenceException))]
public void TestSub()
{
Calculator cal = new Calculator();
Assert.IsNotNull(cal);

int expectedResult = -1;
int actualResult = cal.Sub(a, b);
Assert.AreEqual(expectedResult, actualResult);
}

 
我们可以把一组执行较长时间的测试函数放在一组中,然后有选择的执行,如下图所示:
 


 断言

   在前面的代码中,大家都看到了,NUnit为我们提供了一组辅助函数用于确定某个被测试函数是否工作正常,我们会把这些函数统称为断言。这些断言包括测试某个条件是否为真,两个数据是否相等、不等。如下面两组代码:

判断对象是否为空:
 

// 对象为空
Assert.IsNull(obj);

// 对象不为空
Assert.IsNotNull(obj);
判断对象是否相等:
// 对象相等
Assert.AreEqual(expectedResult, actualResult);

// 对象不相等
Assert.AreNotEqual(expectedResult, actualResult);


 


    通常而言,使用NUnit中提供的默认断言已经足够我们使用了,但是如何你需要对一些特殊数据类型进行测试,则需要进行自定义断言,自定义断言并没有什么特别的地方,与我们编写普通的Class并没有什么区别,只是定义一些静态方法,如下面的代码片段所示:
 

public class MyAssert
{
public static void AreEqual(MyClass expected, MyClass result)
{
// ......
}
}

总结

   本文详细介绍了新版.NET开发必备十大工具之中的NUnit基本使用方法,但并没有涉及更深的内容Mock等,希望通过本文能够带领你走上单元测试之路。 
 
    

1
相关文章