前言:

本文主要是介绍了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这个是对官网章节的翻译,当然你也可以直接去官网查看。

测试项目:

Nunit测试工具使用实例的更多相关文章

  1. Nunit测试工具使用

    Nunit是什么 Nunit是一种TDD工具,和Junit一样的! 怎么样获取Nunit 打开Visual Studio工具,然后在菜单栏中的工具->扩展管理器中的联机库中搜索"nun ...

  2. MySQL数据库基准压力测试工具之MySQLSlap使用实例

    一.Mysqlslap介绍 mysqlslap是MySQL5.1之后自带的benchmark基准测试工具,类似Apache Bench负载产生工具,生成schema,装载数据,执行benckmark和 ...

  3. 压力测试工具JMeter入门教程

    1.Jmeter 概要描叙 jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台.多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台 ...

  4. Android软件测试Monkey测试工具

    前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...

  5. (总结)Web性能压力测试工具之WebBench详解

      PS:在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力 ...

  6. [liu yanling]常用的测试工具

    常用的测试工具 1. 功能测试工具——QTP 2. 性能测试工具——LoadRunner 3. 测试管理工具——TestDirector 4. 白盒测试工具——Nunit,Junit,C++Test, ...

  7. 支持https的压力测试工具

    支持https的压力测试工具 测试了linux下的几种压力测试工具,发现有些不支持https,先简单总结如下: 一.apache的ab工具 /home/webadm/bin/ab -c 50 -n 1 ...

  8. SwingBench---ORACLE压力测试工具

    SwingBench---ORACLE压力测试工具 ◆描述SwingBench是Oracle UK的一个员工在一个被抛弃的项目的基础上开发的.目前稳定版本2.5,基于JDK.该工具是免费的,可以在作者 ...

  9. 测试工具——JMeter

    本学期新学的课程,软件测试,上机的实验用到了C++Test,QTP,还有JMeter.今天针对JMeter做一次总结,方便以后用到,知道步骤会更加方便. 首先,对Jmeter进行一个大致的了解,包括对 ...

随机推荐

  1. spring整合mybatis错误:Could not autowire field: com.kjczwl.ssm.service.ItemsService com.kjczwl.ssm.controller.ItemsController.itemsservice;

    运行环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:Could not autowire field: com.kj ...

  2. Mac环境下mysql初始化密码问题--If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

    个人在Mac上操作数据库,遇到的启动数据库问题的简单记录 1.苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) 2.进 ...

  3. 结对编程1---基于Flask的四则运算题目生成器

    项目代码地址 / WEB应用地址 / 合作伙伴iFurySt博文链接 需求分析 本次程序是基于原有的控制台四则运算器的基础上,改成WEB的形式,同时还增加了一些新的功能.同时因为交互方式的改变,代码也 ...

  4. 201521123107 《Java程序设计》第2周学习总结

    第2周作业-Java基本语法与类库 1.本周学习总结 要点主要有: (1)String类 String类是本周的一个重点,String类的对象是不可变的,即String对象后就在内存中开辟了一个字符串 ...

  5. 201521123034《Java程序设计》第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  6. 201521044091 《Java程序设计》第2周学习总结

    1本章学习总结 (1)一些java的基本语法 (2)java API文件 (3)使用码云管理自己的代码 2.Java Q&A 1)使用Eclipse关联jdk源代码(截图),并查看String ...

  7. java web:在eclipse中如何创建java web 项目

    Eclipse创建java web工程 eclipse版本:eclipse-jee-4.5-win32-x64 tomcat版本:apache-tomcat-7.0.63-windows-x64 jd ...

  8. 看懂类图——UML类图基础

    类图 要学懂设计模式,就需要先看得懂类图,类与类之间的关系是学习设计模式的基础,而在软件工程中,类与类之间的关系是通过UML中的类图来体现. 这篇笔记包含的不会是类图的所有东西,包含的只是各个类之间的 ...

  9. MySQL数据库引擎介绍、区别

    数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另 ...

  10. SAP高可用性(HA)

    1.SAP系统高可用的要求 高可用性是从终端用户的角度来需求,及要求最大化系统的可用性.其目的是降低意外系统关闭时间(服务器生效.存储失效.操作系统失败--),减少预期系统关闭时间(系统及架构的维护. ...