zoukankan      html  css  js  c++  java
  • Nunit测试工具使用实例

    前言:

      本文主要是介绍了Nunit的基本使用,其中参详了很多已有的文章,由于最近要使用其进行测试,所以对网上的文章做了下整理,同时加入了一些自己的实践。

    NUnit的属性

    TestFixture

    它标记一个类包含测试,申明该类是用来测试的。一般用在class的定义之前;

                           

    Test

             一般是放在method之前,表示对该方法的测试,中添加Description参数可以给我们测试的功能添加描述信息

        

    TestCase(arguments)

        属性标记有参数无返值方法为测试方法(泛型方法一样标记),想要多次测试可用逗号隔开([TestCase(1,2), TestCase(2,3)])

    TestCaseAttribute还提供一些列其他属性:

        Description:描述测试用例详情

        ExpectedException:指定期望抛出的异常

        ExpectedExceptionName:指定期望抛出异常的全名

        ExpectedMessage:指定期望抛出异常的信息

        Explict:设置为true标记测试用例为显示执行,用Reason来诠释缘由

        Ignore:设置为true用于指定忽略测试用例,用Reason来诠释缘由

        IgnoreReason:指定忽略测试用例及缘由,等同于同时使用Ignore && Reason。注意:本特性会在以后版本中移除

        MatchType:MessageMatch枚举类型,指定测试期望信息(详情见ExpectedExceptionAttribute

        Reason:指定不执行测试用例的缘由,结合Ignore或Explicit特性使用

        Result:指定测试方法期望的返回值,返回值类型必须是可兼容的

        TestName:为测试用例指定一个名称,如果不指定会根据测试方法及参数自动生成。

    Explicit

       属性标记测试方法需要在UI界面显式执行,如果不想对某个方法进行单元测试,只是在它被选中时才进行测试的话,可以调用该特性。

     

    Ignore

        属性标记一个测试方法或一个测试类被忽略,如果测试类被忽略,其内中的测试方法也会被忽略。

    ExpectedException(Type)

    属性标记测试方法在运行时抛出一个期望的异常,如果是则测试通过,否则不通过

     

    Category("")

    属性标记用于将测试分类(便于只测试需要的类别),可在方法与类上进行标记,在NUnit-GUI界面的Categories选项卡中对要参与参数的类别进行选择,Run时仅测试该类别的测试。如果均不选,则默认全部测试

     

    TestFixtureSetUp

    属性标记方法为类级别设置(初始化)方法,在整个测试类中执行一次初始化,所有的测试方法共享初始化数据,标记此属性的方法可以简单的将其想象为一个初始化器,就行类的构造函数一样

    TestFixtureTearDown

    属性标记方法为类级别拆卸方法,在整个测试类中执行一次拆卸.当测试类中的所有测试方法执行完成,就会执行拆卸方法,用于清除数据、释放资源,可以将其想象为一个析够函数,在测试完成后对测试过程中使用的资源进行回收

    TearDown

    属性标记方法为函数级别的拆卸方法,在执行完每个测试方法后,执行该拆卸方法。一个测试类可以仅有一个TearDown/Setup/TestFixtureSetUp/TestFixtureTearDown方法。如果有多个定义,测试类也会编译成功,但是测试时不会运行这些标记过的方法

    SetUp

    属性标记方法为函数级别的设置方法,在执行每个测试方法前,执行该设置方法

    [Maxtime]/[Timeout]

    属性标记测试用例的最大执行时间,前者超时时不取消测试,而后者会强行中断,用法如:[Test, Maxtime(2000)],[Test, Timeout(2000)]。

     

    Repeat

    属性标记测试方法重复执行多少次,如:[Test, Repeat(5)]。

     

    [RequiresMTA]/[RequiresSTA]/[RequiresThread]

    属性标记测试用例必须的在多线程、单线程、独立的线程状态下运行

    Values

    属性标记测试用例的参数,以参数的形式传入一组值,NUnit会把这组值分解成相应数量的子测试。当测试用例的2个参数都使用[Values]进行标记,NUnit默认生成2组数量乘积的用例,需要使用[Sequential]标记测试用例才能按顺序生成一一对应的n(n=2组中最大数组长度)个子测试用例

    ValueSource

    属性标记测试用例的参数,指定参数的数据源来自哪里,在使用[ValueSource]指定数据源时,该数据源必须实现了IEnumerable接口,数据源可以是属性、无参方法、实例或静态成员

    Nunit常用类和方法

    1、Assert(断言):如果断言失败,方法将没有返回,并且报告一个错误。

    1)、测试二个参数是否相等

    Assert.AreEqual;

    Assert.AreEqual;

    2)、测试二个参数是否引用同一个对象

    Assert.AreSame;

    Assert.AreNotSame;

    3)、测试一个对象是否被一个数组或列表所包含

    Assert.Contains;

    4)、测试一个对象是否大于另一个对象

    Assert.Greater;

    5)、测试一个对象是否小于另一个对象

    Assert.Less;

    6)、类型断言:

    Assert.IsInstanceOfType;

    Assert.IsAssignableFrom;

    7)、条件测试:

    Assert.IsTrue;

    Assert.IsFalse;

    Assert.IsNull;

    Assert.IsNotNull;

    Assert.IsNaN;用来判断指定的值是否为数字。

    Assert.IsEmpty;

    Assert.IsNotEmpty;

    Assert.IsEmpty;

    Assert.IsNotEmpty;

    8)、其他断言:

    Assert.Fail;方法为你提供了创建一个失败测试的能力,这个失败是基于其他方法没有封装的测试。对于开发你自己的特定项目的断言,它也很有用。

    Assert.Pass;强行让测试通过

    2、字符串断言(StringAssert):提供了许多检验字符串值的有用的方法

    StringAssert.Contains;

    StringAssert.StartsWith;

    StringAssert.EndsWith;

    StringAssert.AreEqualIgnoringCase;

    3、CollectionAssert类

    CollectionAssert.AllItemsAreInstancesOfType;集合中的各项是否是某某类型的实例

    CollectionAssert.AllItemsAreNotNull:集合中的各项均不为空

    CollectionAssert.AllItemsAreUnique;集合中的各项唯一

    CollectionAssert.AreEqual;两个集合相等

    CollectionAssert.AreEquivalent;两个集合相当

    CollectionAssert.AreNotEqual;两个集合不相等

    CollectionAssert.AreNotEquivalent;两个集合不相当

    CollectionAssert.Contains;

    CollectionAssert.DoesNotContain;集合中不包含某对象

    CollectionAssert.IsSubsetOf:一个集合是另外一个集合的子集

    CollectionAssert.IsNotSubsetOf:一个集合不是另外一个集合的子集

    CollectionAssert.IsEmpty;集合为空

    CollectionAssert.IsNotEmpty;集合不为空

    CollectionAssert.IsOrdered;集合的各项已经排序

    4、FileAssert

    FileAssert.AreEqual;

    FileAssert.AreNotEqual;

    5、DirectoryAssert

    DirectoryAssert.AreEqual;

    DirectoryAssert.AreNotEqual;

    DirectoryAssert.IsEmpty;

    DirectoryAssert.IsNotEmpty;

    DirectoryAssert.IsWithin;

    DirectoryAssert.IsNotWithin;

    Nunit测试工具下载:

      ReSharper集成:

           http://www.jetbrains.com/resharper/download/

    Nunit工具:

      https://github.com/nunit/nunitv2/releases/tag/2.6.4可根据自己的需要进行下载

    Nunit工具使用

    1.下载解压后,得到NUnit-2.6.4文件夹,打开文件夹中的bin文件,如下图:

     

    2.选中nunit.exe发送快捷方式到桌面,双击刚发到桌面上“nunit.exe-快捷方式”图标,进入Nunit工具运行界面,如图:

     

    3如图,通过菜单中File的下拉列表中的“Open Project Ctrl+O”项,找到为测试而写的测试项目的.dll文件(.exe文件也可),添加到NUnit中。

    4.下图便是加载后的展示。直接单价Run按钮,运行测试代码。

     

    5.用例测试,完全成功通过的示例图为:

     

    6.存在测试失败时,图示:

     

    7.存在被忽略用例,不存在出错用例时:

     

    8.混合用例(同时存在忽略用例+出错用例):

     

    ReSharper使用单元测试

      1.以下是一个需要测试的类库和一个 Nunit测试单元。

        

          2.右键 Nunit测试单元,选择Run Nunit tests即可

              

     3.选择之后就会看到如下界面:

     

    这个界面的使用和Nunit Ui界面的使用类似,不多讲。同时你可能看到有一个Dubug Nunit Tests 选项,他的功能就类似代码调试,可以逐步调试测试用例调用的过程,记得打断点。

           

    注意

      在测试单元需要引入 这个包,这个包的来源可以在你下载的Nunit工具中找到。

    学习资料:

    http://www.cnblogs.com/kim01/default.aspx?page=3这个是对官网章节的翻译,当然你也可以直接去官网查看。

    测试项目:

  • 相关阅读:
    2-SAT模板
    AC自动机
    省选预备营-Day3(图论) 总结
    省选预备营-Day2(分治) 总结
    左偏树(可并堆)总结
    省选预备营-Day1(数据结构) 总结
    OI基础知识
    C++ 堆
    CH4601 普通平衡树
    java 函数形参传值和传引用的区别
  • 原文地址:https://www.cnblogs.com/yankun1991/p/7199850.html
Copyright © 2011-2022 走看看