`
pcajax
  • 浏览: 2162654 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用NUnit做单元测试(总结版)

 
阅读更多

使用NUnit做单元测试(总结版)


【按:有关于NUnit的详细介绍请见:《NUnit2.0详细使用方法 》http://confach.cnblogs.com/archive/2005/06/20/177817.aspx 本文是个人心得和简要总结】


一、本文摘要:


 ●什么单元测试
 ●什么是NUnit
 ●NUnit的下载以及安装
 ●NUnit的启动
 ●NUnit的最简单使用
 ●验证设计的功能是否实现
 ●SetUp/TearDown 属性
 ●TestFixtureSetUp/TestFixtureTearDown
 ●Category属性
 ●Explicit属性
 ●输出


二、什么单元测试

单元测试,就是局部测试,对于web应用程序或者Windows应用程序来说,都是由很多“局部”组成的。如果是一个具体的Web Page,那么可以通常运行、浏览页面看到具体的结果,但是如果是一个类,测试起来可能就会有一些麻烦,尤其是在类反复继承之后,想要查看程序运行过程中某个类的具体实现结果和实现过程,往往就不那么容易了。
vs IDE当中包含调试(Debug)和跟踪(Trace)的功能,但是它们也有一些局限,往往都是要对程序的整体进行测试,通过层层调用才能运行到某个类。
所以使用单元测试对局部进行测试就会有更好的结果了。
使用单元测试可以很轻松的实现:

静态类测试
静态方法测试
类的实例化测试
类的方法测试


三、什么是NUnit?

单元测试通过有两种办法:一个是微软在VS提供的单元测试,另一个是NUnit,前者可能更复杂也更全面(我只实践过一次,发现复杂是肯定有的),后者更简洁明了。

四、NUnit的下载以及安装

和普通的软件没有什么区别,略。
下载地址:http://www.nunit.org/

五、NUnit的启动

有两种方法,一个是单独启动(通过开始菜单快捷方式),这个时候需要指定已经编译好的dll路径;另一个是集成在VS中启动。

后者适合单独开发类库的时候使用,否则,在一个解决方案中既有类库,也有Web应用程序,还得反复切换“启动项目”。

单独启动的时候,指定好已经编译的DLL,按下"RUN"按钮,测试成功就会以绿色方式显示,失败就会显示红色,黄的部分则是通过Category指令跳过。

六、最简单使用


◆在项目(库类)中添加NUnit的引用。

NUnit.Framework 有针对 .net framwork 1.1和2.0两个版本,引用的时候需要注意

◆新建一个类

需要说明的是
i)NUnit通过创建这个类的实例,和运行这个实例的方法来完成测试。它和原始的、想测试的目标类,并不相同。假如写好一个类classA,想要对classA进行测试,那么现在新建的这个类就是Test_For_ClassA
ii)为了便于叙述,文中使用命名约定:“原始类”和“测试类”


◆并且使用Using指令把"NUnit.Framework;"命名空间包含进来

注意大小写,在添加引用的时候是全小写的,但是命名空间却不是。


◆在类名称前面加上指令:[TestFixtureSetUp],这个类必须是public


◆添加一个public void 方法,在这个方法前面加上 [Test]指令。后文管这种方法叫做“测试方法”


◆ Shift+F6或者F6生成


◆通过开始菜单快捷方式启动NUnit

◆通过“文件”菜单》“打开”,浏览并找到刚才生成的dll

◆按下Run按钮,NUnit显示绿色的进度条,表明测试成功。


以上就是NUnit的最简单使用,这里其实什么也没有测试,只是演练一下NUnit这个单元测试工具的使用。下面进一步介绍NUnit的使用方法。


七、验证设计的功能是否实现

7.1基本的测试

◆例如:类的实例化

新建一个测试类,添加一个“测试方法”,在这个方法中添加原始类的实例化代码,这时候可以使用各种构造函数,例如(这里使用范例代码不能运行):

class a  = new class();
class b = new class("abc");

使用NUnit测试。如果“测试方法”测试通过显示绿色的进度条,那就证明类的构造函数通过了测试。

◆例如:类的void方法

在“测试方法”中实例化原始类,然后再运运行相应的方法,例如(这里使用范例代码不能运行):

class a = new class();

a.go();

7.2详细测试:断言

以上的测试都是简单的验证原始类的某些代码运行过程中是否出现异常。对于复杂的类来说,这些远远不够,对于原始类的属性和有返回值的方法可以使用NUnit提供的Assert(断言)来测试。例如:

原始类:

public class tag
{
    public int Count;
    public tag(string html)
    {
        prase(html);
    }
    public void prase(string str)
    {
 Count = 0;
        //中间包含具体的解析代码,解析过程中统计标签的数量,略
        return ;
    }
}

测试类:

[TestFixture]
public class TestTag
{

    [Test]
    public void T1()
    {
        tag t = new tag("<i>abc</i>");
        Assert.AreEqual(1, t.Count);
    }
}


NUnit在测试的时候,就会比较t.Count是否和1相等,相等则通过测试,并且通过绿色表示出来。
需要说明的是,Assert.AreEqual只是针对值类型判断是否相等。其它的断言,请查看中文帮助:http://www.36sign.com/nunit/assertions.html

还有一些情况不能通过异常和或者断言来判断,那么有两个选择:
A 自己在测试类当中写私有的类业判断

B 在控制台中输出相关的信息。

 

 

八、SetUp/TearDown 指令

简单说,就是多个测试中包含的“重合”的代码,可以放到[SetUp]指令指导定的代码当中。每个[Test]方法都会在运行之前先运行[SetUp]运行结束再运行[TearDown]。


九、TestFixtureSetUp/TestFixtureTearDown 指令

这一组指令和前面的指令类似,但是又有些不同,主要的区别在于,这一组指令通常用来打开、释放某些共同的资源(例如数据库连接)


十、Category指令

跳过的测试


十一、Explicit指令

在7.1中是验证代码能否正常运行,如果不出现异常那么就通过测试了。在这里Explicit指令是故意验证,代码当中会不会出现某一具体的异常。

 

十二、输出

根据测试的需要,可以在NUnit测试的过程种在控制台输出测试类中指定的信息。

能过在NUnit工具的“Text Output”选项卡可以看到测试过程中输出的信息。

例如:

        [TestFixtureSetUp]
        public void Init()
        {
             Console.WriteLine("开始测试并且初始化。");
        }

 

PS:关于输出,我封装了一个类TestBase,除了输出文本以外,还可以输出DataTable的内容。具体请见下面的链接。

http://www.cnblogs.com/xpnew/admin/EditPosts.aspx?postid=1795867
 

分享到:
评论

相关推荐

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

    总结来说,NUnit是一个强大的.NET单元测试框架,它通过利用.NET的特性提供了高度灵活和可扩展的测试解决方案。通过编写和执行NUnit测试,开发者可以增强代码质量,减少调试时间,并提高软件项目的整体可靠性。无论是...

    Nunit测试的一个小例子

    在这个小例子中,我们将深入理解如何使用NUnit进行单元测试,这对于任何软件开发过程都是至关重要的,因为它确保了代码的质量和可靠性。 **安装NUnit** 在开始编写NUnit测试之前,首先需要安装NUnit 2.6.2版本。这...

    NUnit 测试单元带有客户端,之后版本不在有客户端

    NUnit是一款广泛使用的开源单元测试框架,尤其在.NET开发者中非常流行。它的主要目标是提供一个简单、灵活且强大的工具,使得程序员能够对他们的代码进行自动化测试,确保每一部分的功能都按照预期工作。NUnit最初是...

    单元测试之道(使用NUnit).doc

    【单元测试之道(使用NUnit)】 单元测试是一种软件开发中的关键实践,它涉及编写针对代码的独立测试用例,通常针对单个方法或小范围的功能。这些测试用例是可重复执行的,并且旨在确保代码片段在各种条件下的正确...

    对WinForm进行单元测试的例子(使用NUnitForms)

    总结来说,使用NUnitForms进行WinForm的单元测试是提升代码质量的有效手段,尤其对于包含复杂用户交互的模态对话框。通过创建和操作窗体,模拟用户行为,我们可以确保WinForm应用程序的UI层符合预期,减少缺陷,增强...

    利用NunitFramework进行普通类库和涉及数据库操作的类库的单元测试(源代码)

    总结,利用NUnit Framework进行单元测试可以有效地提高代码质量和可靠性,无论是对普通类库还是涉及数据库操作的类库。通过创建独立的测试用例、模拟外部依赖以及执行断言,我们可以确保代码在各种情况下都能正确...

    Nunit的使用说明文档

    NUnit是一款广泛使用的开源单元测试框架,主要针对.NET平台。Nunit 2.4.8是该框架的一个较早版本,但即便如此,它依然包含了丰富的功能和足够的稳定性,适合初学者入门和开发者进行测试工作。这篇使用说明文档将帮助...

    nunit使用,介绍nunit的使用的好文章

    总结,NUnit 是 .NET 开发者进行单元测试的重要工具,通过理解其核心概念、安装方法、attribute 的使用以及断言机制,可以有效地确保代码质量并提高开发效率。在实践中,不断熟悉和运用这些知识,将使你成为更出色的...

    NUnit学习资料(C#版)

    NUnit是.NET框架下的一款广泛使用的单元测试框架,尤其在C#编程中,它为开发者提供了强大而灵活的工具来编写和执行单元测试。本文将深入探讨NUnit的基础概念、核心功能以及如何在C#项目中应用NUnit进行测试。 一、...

    NUnit单元测试

    总结,NUnit是C#单元测试的重要工具,通过它,开发者能够有效地保证代码质量,发现并修复问题,提高开发效率。通过深入理解和熟练运用NUnit的各种特性,可以帮助开发者构建更加健壮和可靠的软件系统。在`NUnitDemo-...

    winform NUNIT的测试初始化和清理

    在.NET开发领域,WinForm是一种常用的用户界面框架,而NUnit则是一款强大的单元测试工具。本文将深入探讨如何在WinForm应用中结合NUnit进行测试初始化和清理工作,以确保测试的准确性和可维护性。 首先,理解NUnit...

    数据库单元测试总结~~单元测试

    数据库单元测试是对数据库存储过程、函数、触发器等单独组件进行的测试,旨在验证这些组件在特定条件下的功能是否正确。这种测试方法是软件开发中的重要环节,它可以帮助开发者确保数据库逻辑的正确性,减少集成测试...

    NUnit详细使用方法

    NUnit是一个广泛使用的开源单元测试框架,主要用于.NET应用程序的测试。它为开发者提供了一种方便、灵活的方式来验证代码的功能和正确性。这篇详尽的指南将深入探讨NUnit的使用方法,帮助你充分利用这个强大的工具。...

    .Net 单元测试案例

    总结来说,.NET单元测试案例涉及到选择合适的测试框架、遵循最佳实践编写测试用例、使用mocking技术来隔离测试以及集成到开发工作流中。通过有效的单元测试,开发者可以提高代码质量,减少缺陷,增强代码的可维护性...

    Nunit测试调试工具

    总结,NUnit作为一款强大的单元测试框架,对于ASP.NET开发者来说,是保证代码质量不可或缺的工具。通过使用NUnit,开发者可以更有效地定位和修复代码错误,提升软件的稳定性和可靠性。通过学习和熟练掌握NUnit的使用...

    Nunit.dll+详细使用方法

    NUnit 是一个开源的、广泛使用的单元测试框架,它为.NET开发者提供了方便快捷的单元测试能力。NUnit 支持多种.NET版本,包括.NET Framework、.NET Core以及.NET Standard,使其在各种开发环境中都具有良好的兼容性。...

    软件单元测试讲义ppt

    在实践中,开发者常使用各种单元测试框架,如Java的JUnit、Python的unittest、C#的NUnit等。这些框架提供了编写和执行测试用例的结构和工具,简化了测试代码的编写。 四、模拟与隔离 为了确保单元测试的独立性,...

Global site tag (gtag.js) - Google Analytics