技术开发 频道

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

   它们的作用类似,只不过执行的次数不一样,TestFixtureSetup和TestFixtureTearDown是在类初始化(释放)时执行一次,即在所有测试用例方法执行之前(之后)只执行一次;而Setup和TearDown是在每一个测试用例方法执行之前(之后)执行一次,以上面的代码为例,他们之间的关系图如下图所示:
 



Ignore和Explicit

   在做单元测试时,可能有些测试用例非常耗时,如执行一次测试需要几个小时,这时我们不想看到的。我们希望有些测试用例能够不执行或者有些测试用例只有显示调用时才执行,这时Ignore或Explicit就有了用武之地了。使用Ignore特性我们可以忽略某一个测试用例的执行,而使用Explicit则可以在显示调用时才执行,如下代码所示:
 

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

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

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

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

 
   现在执行测试用例后,可以看到黄色信号灯出现了:




ExpectedException

   在很多时候,我们可能只定义了一个方法,并没有对它进行实现,而只是抛出一个我们已知的异常,我们自然不希望因为这个导致测试用例无法通过。此时ExpectedException可以派上用场了。我们在Calculator在添加一个Sub方法,这里对该方法并不进行实现,而只是抛出一个NullReferenceException异常,如下代码所示:
 

public int Sub(int a, int b)
{
throw new NullReferenceException();
}

   
   现在再编写一个测试用例函数,如下代码所示:
 

[Test,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);
}

1
相关文章