十个必备的.NET开发小工具(4):NUnit

作者:James Avery 翻译:lucentoff

出处:http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx

声明:版权属原作者所有,转载请注明出处!


NUnit

 

NUnit是一个为.NET Framework建立的开源单元测试框架。NUnit允许在代码中编写测试程序来测试应用程序特定的功能。单元测试是一种优秀的测试代码功能性的方法,它也为应用程序提供了一种回归测试方法。NUnit为编写单元测试提供一个框架并提供图形化界面运行测试和查看结果。

 

编写Nunit测试

例如,我想测试.NET FrameworkHashtable类的功能性以确定两个对象是否可以添加到Hashtable中并进行检索。首先,我要添加对NUnit.Framework程序集的引用,以便能够访问Nunit Framework的特性和方法。接下来,创建一个类并以TestFixture特性标记。这个特性让NUnit知道该类包含NUnit测试:

 

using System;
using System.Collections;
using NUnit.Framework;
 
namespace NUnitExample
{
    [TestFixture]
    public class HashtableTest {
        public HashtableTest() {
            
        }
    }
}

 

再创建一个方法并以[Test]特性标记,以便让NUnit知道该方法是一个测试。然后,建立一个Hashtable并添加两个值,最后使用Assert.AreEqual方法来查看是否能够检索到相同的值添加到了Hashtable中,代码如下所示:

 

[Test]
public void HashtableAddTest()
{
    Hashtable ht = new Hashtable();
            
    ht.Add("Key1", "Value1");
    ht.Add("Key2", "Value2");
 
    Assert.AreEqual("Value1", ht["Key1"], "Wrong object returned!");
    Assert.AreEqual("Value2", ht["Key2"], "Wrong object returned!");
}

 

以上测试虽然简单,但能够展示出NUnit的功能。NUnit中有许多测试类型和各种Assert方法,可用于测试代码的每个部分。

 

要运行该测试,需要创建一个项目,在NUnit中打开已生成的程序集,然后点击“Run”按钮,运行结果如图5所示。

 

 

5  NUnit测试运行结果

 

当看到绿色的状态条,我感觉很兴奋也很亲切,因为它表明测试通过了。这个简单的例子展示了NUnit的易用性和强大的功能。编写可以保存并且无论何时改变代码都能重新运行的单元测试不仅使得检测代码缺陷更为容易,而且让你能够交付更好的应用程序。

 

NUnit是一个开源项目,下载网址:http://www.nunit.org/。还有一个很好的NUnit Visual Studio .NET插件,它能让你直接从Visual Studio运行单元测试。这个插件可以在http://sourceforge.net/projects/nunitaddin找到。要了解更多有关NUnit的信息以及它在测试驱动开发中的应用,可阅读20044MSDN? 杂志中的文章Test-Driven C#: Improve the Design and Flexibility of Your Project with Extreme Programming Techniques(《C#测试驱动开发:利用极限编程技术改进项目设计和灵活性》)。

 


 
[ 以下内容为译者补充,摘自:http://www.nunit.org/ ]
 
Nunit包括两种运行方式:控制台方式(nunit-console.exe)和图形用户界面方式(nunit-gui.exe)。
 
控制台方式:以命令行方式运行,可自动将测试结果保存为XML格式,允许产生报告或对结果进行处理。该方式对于测试自动化和集成到其它系统中非常有用。
 
 
图形用户界面方式:该方式为Windows窗体应用程序,以图形化界面显示测试结果,测试不能运行标记为黄色圆圈,测试成功标记为绿色圆圈,如果所有测试都失败则标记为红色。
 
posted @ 2011-05-16 14:39  Yaoquan.Luo  阅读(270)  评论(0编辑  收藏  举报