`
coconut_zhang
  • 浏览: 543715 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

NUnit2.0详细使用方法

阅读更多

1、初识NUnit
NUnit是一个开源单元测试框架,它提高一套API,同时拥有自己的GUI,如下:

 
在此不想过多地讨论GUI的布局和功能,毕竟这个GUI还是简单易用的,各个面板和菜单的功能都是很直观的,一看就明白了。

2、NUnit常用属性
(1)TestFixture:这个属性标记一个类是测试用例类,也就是说NUnit根据这个数据判断一个类是否是测试类。当然,NUnit对测试类也是有要求的:类必须是Public的;必须有一个默认的构造函数;默认的构造函数不应该有任何副作用。引用个例子如下:

using System;
using NUnit.Framework;
[TestFixture]
public class PriceFixture
{
    //...
}
(2)Test:这个属性用来标记一个类(已经标记为TestFixture)的某个方法是可以测试的,同样NUnit对可测试Method也有一定要求:为了和先前的版本向后兼容,头4个字符(“test”)忽略大小写;这个方法必须没有任何参数;这个方法没有任何返回值;这个方法为Public的。引用个例子如下:

using System;
using NUnit.Framework;
[TestFixture]
public class SuccessTests
{
    [Test]
    public void Test1()
    {//TODO:}
}
一般来说,有了上面两个属性,你可以做基本的事情了,但对于一个真正的测试来说这还不够,有可能还需要下面的属性配合工作。
(3)SetUp/TearDown:在早期给的test fixture定义里,我们说test fixture的测试是一组常规运行时资源.在测试完成之后,或是在测试执行种,或是释放或清除之前,这些常规运行时资源在一确定的方式上可能需要获取和初始化.NUnit使用2个额外的属性:SetUp 和TearDown,就支持这种常规的初始化/清除.我们上面的例子来描述这个功能.让我们增加乘法.
[TestFixture]
public class NumersFixture{
    [Test]
    public void AddTwoNumbers(){
        int a=1;
        int b=2;
        int sum=a+b;
        Assert.AreEqual(sum,3);
    }

    [Test]
    public void MultiplyTwoNumbers(){
        int a=1;
        int b=2;
        int product = a * b;
        Assert.AreEqual(2, product);
    }
}
   我们仔细一看,不对,有重复的代码,如何去除重复的代码呢?我们可以提取这些代码到一个独立的方法,然后标志这个方法为SetUp 属性,这样2个测试方法可以共享对操作数的初始化了,这里是改动后的代码:
[TestFixture]
public class NumersFixture{
    private int a;
    private int b;
    [SetUp]
    public void InitializeOperands(){
        a = 1;
        b = 2;
    }
    [Test]
    public void AddTwoNumbers(){
        int sum=a+b;
        Assert.AreEqual(sum,3);
    }
    [Test]
    public void MultiplyTwoNumbers(){
        int product = a * b;
        Assert.AreEqual(2, product);
    }
}
这样NUnit将在执行每个测试前执行标记SetUp属性的方法.在本例中就是执行InitializeOperands()方法.记住,这里这个方法必须为public,不然就会有以下错误:Invalid Setup or TearDown method signature
(4)ExpectedException: 有的时候,我们知道某些操作会有异常出现,这个属性帮助我们写程序员测试验证边界条件。引用例子如下:
[Test]
[ExpectedException(typeof(DivideByZeroException))]
public void DivideByZero(){
    int zero = 0;
    int infinity = a/zero;
    Assert.Fail("Should have gotten an exception");
}
DivideByZero方法有另外一个客户属性: ExpectedException.在这个属性里,你可以在执行过程中捕获你期望的异常类型,例如在本例就是DivideByZeroException.
(5)Ignore: 由于种种原因,有一些测试我们不想运行。但你有不想破坏测试,此时使用Ignore属性。你可以保持测试,但又不运行它们。引用例子如下:
[Test]
[Ignore("Multiplication is ignored")]
public void MultiplyTwoNumbers(){
    int product = a * b;
    Assert.AreEqual(2, product);
}
被Ignore后,运行包含这个用例的测试,会出现红色标记,如下图:
Ignore属性可以附加到一个独立的测试方法,也可以附加到整个测试类(TestFixture).如果Ignore属性附加到TestFixture,所有在fixture的测试都被忽略。
(6)TestFixtureSetUp/TestFixtureTearDown:有时,一组测试需要的资源太昂贵.例如,数据库连接可能是一个关键资源,在一个test fixture的每个测试中,打开/关闭数据库连接可能非常慢.这就是我在开始提到的问题.与SetUp/TearDown的属性不同,TestFixtureSetUp和TestFixtureTearDown.正如他们名字表明的一样,这些属性用来标记为整个test fixture初始化/释放资源方法一次的方法。引用例子如下:
[TestFixture]
public class DatabaseFixture{
    [TestFixtureSetUp]
    public void OpenConnection(){
        //open the connection to the database
    }
    [TestFixtureTearDown]
    public void CloseConnection(){
        //close the connection to the database
    }
    [SetUp]
    public void CreateDatabaseObjects(){
        //insert the records into the database table
    }
    [TearDown]
    public void DeleteDatabaseObjects(){
        //remove the inserted records from the database table
    }
    [Test]
    public void ReadOneObject(){
        //load one record using the open database connection
    }
    [Test]
    public void ReadManyObjects(){
        //load many records using the open database connection
    }
}
(7)Suite: Test Suite是test case或其他test suite的集合. 合成模式描述了test case和test suite之间的关系。引用例子如下:
public class AllTests{
    [Suite]
    public static TestSuite Suite{
        get{
            TestSuite suite = new TestSuite("All Tests");
            suite.Add(new OneTestCase());
            suite.Add(new Assemblies.AssemblyTests());
            suite.Add(new AssertionTest());
            return suite;
        }
    }
}
(8)Category: 对于测试来说,你有的时候需要将之分类,此属性正好就是用来解决这个问题的。
你可以选择你需要运行的测试类目录,也可以选择除了这些目录之外的测试都可以运行。在命令行环境里 /include 和/exclude来实现。在GUI环境下,就更简单了,选择左边工作域里的Catagories Tab,选择Add和Remove既可以了。就不引用例子了。

分享到:
评论

相关推荐

    单元测试工具NUnit2.0详细使用方法

    本文将详细介绍NUnit2.0的使用方法,帮助开发者更好地理解和运用这个强大的工具。 **一、安装与引入** 首先,你需要从NUnit的官方网站下载NUnit2.0的安装包,它通常包含一个dll文件,如nunit.framework.dll,这是...

    NUnit2.0 详细使用方法

    这个问题促使我相对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,...

    NUNIT2.0

    NUNIT2.0 软件测试用具(C#.NET)

    NUnit2.0

    C#的一个学习软件,只希望与大家一起分享

    NUnit-2.4.8 For .net2.0

    使用NUnit进行测试时,开发者可以创建测试类,每个类包含多个测试方法。这些测试方法通常以"Test"开头,以便NUnit识别它们。通过使用[NUnit Test Attributes]...

    NUnit-2.4.1-net-2.0

    通过使用[NUnit GUI Runner](https://docs.nunit.org/articles/nunit-2.5/nunit-gui-runner.html)或[NUnit Console Runner](https://docs.nunit.org/articles/nunit-2.5/nunit-console-runner.html),开发者可以轻松...

    NUnit-2.4.1-net-2.0 单元检测工具

    5. **测试结果报告**:NUnit能够生成详细的测试报告,包括成功、失败、错误和忽略的测试。这些报告有助于快速定位问题,理解测试覆盖率。 6. **扩展性**:NUnit有一个插件系统,允许开发自定义的测试适配器、约束和...

    NUnit 2.4.1 简体中文版(.net1.1_2.0)

    3. **NUnit2.pdf**:这可能是NUnit的用户手册或者指南,详细介绍了如何使用NUnit进行单元测试,包括创建测试、运行测试套件、断言方法和其他高级特性。 4. **license.txt**:这是NUnit的许可协议,规定了软件的使用...

    Nunit的使用说明文档

    NUnit是一个用于.NET应用程序的单元测试框架,它支持.NET Framework的多个版本,包括.NET 2.0以上。通过NUnit,开发者可以编写可重复运行的测试用例,以验证代码的各个模块是否按预期工作。NUnit提供了丰富的断言...

    NUnit-2.2.9-net-2.0-dbg 中文

    随包提供的“使用说明.htm”和“使用说明.txt”文件,是NUnit的使用指南,可能包含如何配置、编写和运行测试的详细步骤。这些文档通常会涵盖如何创建测试类、定义测试方法、组织测试集以及如何读取和理解测试结果等...

    NUnit Test Generator2.0(破解版,无限期使用)

    NUnit Test Generator是一个自动生成测试用例的工具,可以编辑生成用例的模板,直接双击KellermanSoftware.NUnit-Test-Generator.exe文件就可以使用,需要的朋友可以下载。如使用中出现问题请直接给留言。

    NUnit-2.2.9-net-2.0-dbg

    NUnit是一个开源的、广泛使用的单元测试框架,它允许开发人员编写代码来测试自己的.NET应用程序或库的功能。 描述中的“用于.NET测试的不错的软件”进一步确认了NUnit在.NET生态系统中的重要角色,作为一个高效的...

    NUnit-2.4.3-net-2.0.zip

    NUnit支持多种类型的测试,包括方法级别的断言,如Assert.AreEqual()来验证预期结果,以及测试固定装置来设置测试环境和清理操作。它还支持测试的分类和过滤,方便大型项目的管理和执行。此外,NUnit还提供了强大的...

    Nunit单元测试,pdf讲解使用说明,安装文件

    "NUnit2.pdf"很可能是NUnit的使用指南或教程,涵盖了如何安装、配置和使用NUnit进行单元测试的详细步骤。通常,这样的文档会包含以下内容: 1. **安装与配置**:解释如何下载并安装NUnit,包括如何运行提供的msi...

    .Net 开发人员必备NUnit

    NUnit 是一个广泛使用的开源测试框架,主要用于 .NET 开发中的单元测试。它是 .NET 社区中的首选工具,因为它提供了简单易用的API和丰富的断言库,使得开发人员可以方便地对代码进行验证,确保其功能正确无误。 在...

    NUnit2.4.7

    在使用NUnit进行测试驱动开发(TDD)时,首先编写测试用例,然后编写最小量的生产代码来使测试通过。这种开发方式有助于确保代码的健壮性和可维护性,因为它强制开发者思考各种可能的边界条件和错误情况。 NUnit...

    NUnit2.5.9 DoNet单元测试软件

    在使用NUnit2.5.9时,开发者通常会创建一个测试项目,然后在项目中添加待测试的代码引用,接着编写测试fixture和测试方法,最后运行NUnit测试宿主来执行这些测试。如果所有测试都通过,那么可以有信心地说,代码的这...

    nunit3.4.1安装

    在进行单元测试时,了解如何编写 NUnit 测试用例、使用断言方法(如 `Assert.AreEqual`、`Assert.Throws` 等)以及如何组织测试结构(如测试 fixture、测试方法等)都是必要的技能。NUnit 提供了丰富的文档和示例,...

Global site tag (gtag.js) - Google Analytics