1、介绍

NUnit 是一个免费开源的(http://www.nunit.org)产品,它提供了一套测试框架和一个测试运行程序(test runner)。注意:test tunner 知道如何寻找具有 [TestFixture] 属性的类和类中的 [Test] 方法。

2、下载

http://www.nunit.org/index.php?p=download

3、使用 test tunner 的方法:   

    1. NUnit GUI
   它提供一个独立的NUnit 图形化工具。
   从菜单Tool/Options中的个性化设置来打开Visual Studio支持。

 2. NUnit 的命令行   
   需要配置Path运行环境。

3. Visual Studio 的插件
   有几种能把NUnit 集成到Visual Studio的插件,诸如  http://www.mutantdesign.co.uk/nunit-addin/

安装好NUnit后,环境是XP的,发现无法启动,修改一下配置后才能运行

修改NUnit.exe.config,在

1. 在 <configuration> 下 加 
    <startup> 
     <requiredRuntime version="v4.0.30319" /> 
    </startup>

2. 在 <runtime> 加

<runtime>

…… 
    <loadFromRemoteSources enabled="true" /> 
     …… 
    </runtime>

4、测试应遵循的方法

尽量不要破坏原有的代码结构,即不要在原代码中添加一些冗余的测试代码。
    测试模块应尽可能完整地展现测试结果。
    测试模块不应用完即扔掉,要保存以备后续的维护测试。

5、在VS中启动NUnit调试

1.新建一个类库项目。
    2.在解决方案中的项目图标上右击,选择“属性”。
    3.点击左边的“调试”标签
    4.在“启动操作”中选择“启动外部程序”,并指明NUnit程序的运行路径。
    5.在启动选项中的“工作目录”下,指明当前类库项目的DLL文件的所在路径。

6、NUnit界面显示

在右边有一个进度条,如果所有测试案例运行成功,就为绿色,反之如果有一个不成功,则为红色,但也有黄色的.
    绿色 描述目前所执行的测试都通过 
    黄色 意味某些测试忽略,但是这里没有失败 
    红色 表示有失败

左边的树状目录是我们们编写的每一个测试单元。

底部的状态条
    状态:当所有测试完成时,状态变为Completed.运行测试中,状态是Running: <test-name>
    Test Cases:说明加载的程序集中测试案例的总个数。这也是测试树里叶子节点的个数。 
    Tests Run: 已经完成的测试个数。 
    Failures: 到目前为止,所有测试中失败的个数. 
    Time: 显示运行测试时间(以秒计)

7、NUnit中常用的Attribute

1.TestFixture

用来修饰测试类。这个属性标记一个类包含了测试方法。
    被TestFixtureAttribute修饰的类需满足以下限制
        a.必须是一个public类型,否则NUnit不会识别它。 
        b.它必须有一个缺省的构造子,否则Nunit不能构建他。 
        c.构造子不应该有任何方面的负面影响,因为在一个对话的过程中,NUnit可能构造类多次。

2.Test

用来修饰测试方法。Test属性标记某个类的某个方法为一个测试方法,而且此类必需已经标记为一个TestFixture。

注意:测试方法必须没有参数

3.SetUp

用来修饰方法。所属的类必需已经标记为一个TestFixture。一个TestFixture可以仅有一个SetUp方法。如果有多个定义,        TestFixture也会编译成功,但是测试不会运行。SetUpAttribute标记的方法是在每个测试方法被调用之前来完成的。

 4.TearDown

用来修饰方法。所属的类必需已经标记为一个TestFixture。一个TestFixture可以仅有一个TearDown方法。如果有多个定义,     TestFixture也会编译成功,但是测试不会运行。被TearDownAttribute修饰的方法是每个测试方法被调用之后来执行的。

5.TestFixtureSetUp

用来修饰方法。所属的类必需已经标记为一个TestFixture。这些个属性标记的方式在fixture任何测试执行之前完成。         TestFixture可以仅有一个TestFixtureSetUp方法。如果定义了多个,TestFixture可以成功编译,但是测试不会被执行。

6.TestFixtureTearDown

用来修饰方法。所属的类必需已经标记为一个TestFixture。这些个属性标记的方式在fixture任何测试执行之后完成。TestFixture 可以仅有一个TestFixtureTearDownAttribute方法。如果定义了多个,TestFixture可以成功编译,但是测试不会被执行。

7.ExpectedException

修饰方法,用来测试一个方法是否抛出了指定的异常。本属性有两种重载方式。第一种是一个Type,此Type为期望的异常的精确类型。 第二种是一个期望的异常全名的字符串。(车延禄)
    在执行测试时,如果它抛出了指定的异常,那么测试通过。如果抛出一个不同的异常,测试就失败。如果抛出了一个由期望异常继承而来的异常,这也是成功的。

8.Category

修饰方法或修饰类。用来把测试分组,可以使用NUnit的Categories选项卡选择要测试的组,或排除一些组。

9.Explicit

用来修饰类或方法。Explicit属性会忽略一个测试或测试Fixture,直到它被显式的选择运行。。如果test和test fixture在执行的过程中被发现,就忽略他们。所以,这样一来进度条显示为黄色,因为有test或test fixture忽略了。

  10.Ignore

用来修饰类或方法。由于种种原因,有一些测试我们不想运行.当然,这些原因可能包括你认为这个测试还没有完成,这个测试正在重构之中,这个测试的需求不是太明确.但你有不想破坏测试,不然进度条可是红色的哟.怎么办?使用Ignore属性.你可以保持测试,但又不运行它们。
    这个特性用来暂时不运行一个测试或fixture。比起注释掉测试或重命名方法,这是一个比较好的机制,因为测试会和余下的代码一起编译,而且在运行时有一个不会运行测试的标记,这样保证不会忘记测试。

8、代码样例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NUnit.Framework;
namespace TestUnit
{[TestFixture]public class TestLarge{[Test]public void LargestOf3(){Assert.AreEqual(9, Program.Largest(new int[] { 7, 8, 9 })); // 测试“9”在最后一位Assert.AreEqual(9, Program.Largest(new int[] { 7, 9, 8 })); // 测试“9”在中间位Assert.AreEqual(9, Program.Largest(new int[] { 9, 7, 8 })); // 测试“9”在第一位Assert.AreEqual(9, Program.Largest(new int[] { 9, 9, 8 })); // 测试存在重复的“9”Assert.AreEqual(9, Program.Largest(new int[] { 9 }));     // 测试list中只存在“9”一个元素// 测试list中负数的存在,若类Cmp中Largest方法的 int max=0; 则会检测抱错Assert.AreEqual(-7, Program.Largest(new int[] { -9, -8, -7 }));}[Test, ExpectedException(typeof(ArgumentException))]public void TestEmpty(){// 测试list数组为空(长度为0)时,是否抛出异常Program.Largest(new int[] { });}}
}

NUnit 入门知识相关推荐

  1. java圆周率流程图,流程图、PI图入门知识 课件.doc

    流程图.PI图入门知识 课件 流程图.PI图入门知识 基本定义 工艺流程图﹙又叫PI图﹚,通过图解的形式,表示出在化工生产过程中,由原料制得产品过程的物料和能量发生的变化及其流向:表示出生产中采用的化 ...

  2. 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列

    数学竞赛 数论是纯粹数学的分支之一,主要研究整数的性质,按研究方法分为初等数论和高等数论.中学生(甚至小学生)课外数学兴趣小组的许多内容是属于初等数论的,各级别数学竞赛也会把初等数论作为重点内容进行考 ...

  3. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  4. oracle入门知识实施,新手必须了解的oracle入门知识

    欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle入门知识 一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数 ...

  5. ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH

    入门知识: 把代码部署到服务器, SSH 2015-07-28 16:28 访问量: 2868 分类: 技术 如何登陆远程服务器呢? $ ssh root@your.server.com -p 334 ...

  6. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  7. 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python就业前景广阔.很多 ...

  8. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  9. MySql入门知识(一)

    概述 MySQL是一个真正多用户,多线程结构化查询语言数据库服务器.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL的SQL语言是用于访问数据 ...

最新文章

  1. shell命令 vxworks5.5_vxWorks shell命令
  2. IPv6静态路由怎么配置?
  3. 4 [面向对象]-三大特性:多态
  4. mysql导入数据库某张表_MSSQLServer2005 导出导入数据库中某张表的数据
  5. 结构类型需要重载GetHashCode和Equals
  6. java长时间_什么导致Java中长时间的旋转和同步时间?
  7. 2019年9月数据库流行度排行:MySQL 强劲增长完成深 V 反转
  8. 全球首发!惯性导航导论(剑桥大学)第九部分
  9. 动态设置HTML:v-html
  10. (转)JVM中的OopMap(zz)
  11. 关于es6中新增的一些方法----数组篇
  12. extjs fileuploadfield default value
  13. opencv函数速查笔记
  14. 歌剧世家DSP电脑调音软件
  15. 计算机辅助翻译技术工具,浅析计算机辅助翻译技术对译者的影响
  16. 变色龙配置文件功能介绍
  17. 掌握Android图像显示原理(上)
  18. SpringBoot整合MyBatis实现数据增删改查
  19. 2WD远程控制小车——云端设计
  20. 前端Photoshop切图快速入门

热门文章

  1. 如何录制自己手机视频
  2. ISCC线下赛参赛感悟
  3. 台式电脑电源接口介绍
  4. Excel学习笔记1||求和函数SUM、SUMIF、SUMIFS、SUMPRODUCT
  5. storj主网挖矿指南
  6. Centos中的storm集群环境搭建
  7. 中文版ASAM OpenSCENARIO与OpenDRIVE标准正式发布
  8. 如何使用Kotlin构建Android旋转旋钮以帮助儿子练习钢琴
  9. 开启oracle的acfs,配置OracleACFS集群文件系统
  10. python实现scp功能_如何在Python中进行scp?