一、概述
NUnit是一款的开源回归测试框架,我在《NUnit学习笔记》一文中已对其基本使用方法进行了简单的介绍。但除了TestFixture、TestFixtureSetUp、Test和TestFixtureTearDown这四个常用的属性外,NUnit还提供了ExpectedException、Ignore、Suite、Category和Explicit等属性用于测试。本文的目的是对这些属性进行介绍。
在介绍开始之前,还需要说明一些事情,即本文只提供了C#代码示例,而没有提供VB、J#或Delphi代码示例,而且在示例的编写过程中虽然也使用了Visual Studio.net 2003和Delphi 2005作为编辑器,但文中绝不会涉及项目创建的内容。此外本文的示例都是在NUnit可视化环境下测试的,对于其运行效果,如无必要,本文将仅以文字形式进行说明。
二、ExpectedException
ExpectedException属性用于测试是否会抛出指定的异常,若抛出则NUnit的状态条为绿色,反之为红色。
示例代码:
using System;
using NUnit.Framework;
namespace NUnitTest
{
[TestFixture]
public class Test1
{
[Test]
[ExpectedException(typeof(Exception))]
public void TestExpectedException()
{
string s = "";
if (s != "")
throw new Exception();
}
}
}
测试效果:状态条为红色。
具体说明:由于字符串s在初始化时已赋值为"",因此在判断"s != """时条件自然不会成立,这样不会抛出异常,状态条当然也不会为绿色了。如果想让状态条显示为绿色,将判断条件改为"s == """可以了。
三、Ignore
Ignore属性可以供类和方法使用,使用后类或方法在NUnit测试中会被忽略,也是说,对于暂时不想运行的测试类或测试方法,可以通过Ignore属性将其忽略掉。
示例代码1:
[TestFixture]
[Ignore("class test ignore")]
public class Test2
{
[Test]
public void TestIgnore()
{}
}
示例代码2:
[TestFixture]
public class Test2
{
[Test]
[Ignore("function test ignore")]
public void TestIgnore()
{}
}
测试效果:两个示例被执行后状态条都会显示为黄色。但如果你在测试时选择的是Test2节点,会发现示例一执行后,只有Test2节点前的圆点显示为黄色,状态条没有发生任何变化,而示例二则会将Test2和TestIgnore节点前的圆点都变成黄色,状态条也显示成黄色。这是由于前者忽略的是整个类的测试,而后者忽略的只是测试方法。