用NUnit自动测试.NET代码

转自:中国DotNet俱乐部

NUnit可以使你很快、很容易地对代码进行单元测试。而且它是免费的。
by Bill Wagner
NUnit是一组类,你可以用它在你的.NET类上创建和执行自动的单元测试。作为对本篇文章的补充材料,你可以到NUnit网站上查看关于单元测试的价值的白皮书和文章(见资源)。

你可以下载NUnit的已创建的类,或源代码。我更喜欢下载源代码。当我访问这个站点时,NUnit最新的版本是beta 2,我需要做些修改,这样NUnit就可以在RC1下创建和运行单元测试了。

首先,你需要为NUnit生成你自己的密钥文件(key file),因为源代码中不包含一个密钥文件。按下面的方式生成正确类型的keyfile:sn -k NUnit.key



接下来,你需要改变几个原形(prototype),因为NUnit项目包含Dispose的旧版本。新的原形应该是: virtual void Dispose (bool Disposing);




现在你就可以构建NUnit,运行它,并运用样例测试了。运行NUnitGUI项目来加载测试,选择Browse按钮来载入一个程序集。如果要用样例,就需要选择SampleMoney.dll程序集。一旦你加载了一个程序集,TypeName框就会显示已经定义了测试的程序集的类型。点击Run按钮,执行所有的测试,并在窗口底部查看结果。

运行样例很有用,但你可能想知道如何用你自己的代码来创建和执行测试。为了说明如何运用NUnit,我将为前面写的Source Count程序编写一个测试包(test suite)。NUnit用reflection在你的单元测试代码中找到测试方法。为了创建一个测试包,我们只需要创建一个执行测试的类。你必须从TestCase继承这个类,TestCase是NUnit的一部分。你的新类中的任何测试方法必须是公有的并以“test”开头。测试方法也应该包含一个空的返回类型,并不用任何参数。下面是我的测试包中的两个测试方法:public void testComments () {
    Assert ("Checking Comment lines",
        testObj.SingleLineComments == 2);
}

public void testDocs () {
    Assert
    ("Testing Documentation lines",
    testObj.DocumentationComments == 3);
}




Assert方法(是NUnit的一部分)对测试结果进行检查。你可以用一个字符串来说明哪个测试失败了。一些测试包在运行前需要设置或拆分代码;TestCase类为此提供了虚拟的函数。在我的测试中,我用了SetUp方法来初始化源代码计数器:protected override void SetUp () {
    testObj = new CountStats ();
    StringReader reader = new
        StringReader (theTest);
    testObj.ProcessFile(reader);
}




最后,你需要一个静态的方法来返回ITest接口。NUnit用了一个构造器使这项工作变得很简单。你可以用类型信息为任何测试包创建ITest接口:public static ITest createSuite  {
    get {
        return new TestSuite (typeof
            (MySuite));
    }
}




这就可以了。在列表1中你可以看到整个测试类。这并不是一个完整的测试包,但通过它,你仍可以对如何在你自己的项目中运用NUnit有一定的了解。


关于作者:


Bill Wagner是SRT Solutions的Windows技术专家。他是Visual Studio Magazine的撰稿编辑,也是The C# Core Language Little Black Book一书的作者,这是一本C#开发人员的高级参考书。在16年的软件开发实践中,Bill在许多项目中都是重要的开发人员。他曾为工程和商务应用程序、桌面和Web环境开发过软件。他在2D和3D图象和多媒体软件方面也很有经验,包括为The Lion King Animated Storybook开发的视频回放引擎。他的联系方式是[email protected]
 

你可能感兴趣的:(.NET/windows)