技术开发 频道

在.NET环境中使用单元测试工具Nunit

    NUnit Assert Class简介

    除了以上所提到的这些用来标示测试程序所在的attributes之外,NUnit还有一个重要的class你应该要知道如何使用。这个class就是Assert class。Assert class提供了一系列的static methods,让你可以用来验证主要程序的结果与你所预期的是否一样。Assert class代替了旧的Assertion class,下面是这个类的方法:

Assert.IsTrue( bool );

Assert.IsFalse( bool );

Assert.IsNull( bool );

Assert.IsNotNull( bool );

Assert.AreSame( object, object )

Assert.AreEqual( object, object );

Assert.AreEqual( int, int );

Assert.AreEqual( float, float, float );

Assert.AreEqual( double, double, double );

Assert.Fail();

    使用这个类的示例如下:

namespace UnitTestingExamples
{
using System;
using NUnit.Framework;

[TestFixture]
public class SomeTests
{
[Test]

public void TestEventLengthString()

{

// Should return true

bool bResult1 = Class1.CheckPalindrome("ABCCBA");

Assert.IsTrue(bResult1);

// Should return false

bool bResult2 = Class1.CheckPalindrome("ABCDBA");

Assert.IsFalse(bResult2);

}

[Test]

public void TestOddLengthString()

{

//should return true;

Assert.IsTrue(Class1.CheckPalindrome("ABCDCBA"));

// Should return false

Assert.IsFalse(Class1.CheckPalindrome("ABCDEBA"));

}

}
}

    执行你的Tests

    好,现在我们已经讨论过写Unit Tests的基本步骤及方法,现在让我们来看看如何执行你所写的Unit Tests。事实上非常简单。NUnit里面有两个已经写好的Test Runner applications:一个是窗口GUI程序,一个是console XML(命令列)程序。你可以自由选择你所喜欢的方式,基本上是没有什么差别的。
    如果你要使用窗口GUI的Test Runner app,你只需要执行该程序,然后告诉它你要执行的test method所在的assembly位置。这个包含有你所写test methods的assembly是那一个class library(或是executable,*.dll或*.exe) assembly,其中含有前面谈到的Test Fixtures。当你告诉Test Runner你的assembly所在的位置,Test Runner会自动load这个asembly,然后把所有的class及test methods都列在窗口的左栏。当你按下’Run’按键时,你就会自动执行所有列出来的test methods。你也可以double click其中的一个test class,或是一个test method之上,这样会自动只执行该class或是该method。

    在一些的情况下,特别是你想要在你自己写的build script中加入Unit Testing的情况下,你大概不会使用GUI Test Runner。在这个自动执行build script的情况下,你一般会把你build的结果贴在网页,或写入log file里面存作纪录,以供程序开发人员、经理或是客户可以藉由检查这个纪录知道详细情况。在这个情况,你可以用NUnit 2.1的console Test Runner application。这个Test Runner可以传入assembly的位置当参数,其测试执行结果是一个XML字符串。你可以用XSLT或是CSS把这个XML结果转换成HTML,或是其它你想要的格式。如果你需要用到这个功能的话,请查看NUnit文件中有关console Test Runner application的资料。

0
相关文章