NUnit 入门知识
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 入门知识相关推荐
- java圆周率流程图,流程图、PI图入门知识 课件.doc
流程图.PI图入门知识 课件 流程图.PI图入门知识 基本定义 工艺流程图﹙又叫PI图﹚,通过图解的形式,表示出在化工生产过程中,由原料制得产品过程的物料和能量发生的变化及其流向:表示出生产中采用的化 ...
- 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列
数学竞赛 数论是纯粹数学的分支之一,主要研究整数的性质,按研究方法分为初等数论和高等数论.中学生(甚至小学生)课外数学兴趣小组的许多内容是属于初等数论的,各级别数学竞赛也会把初等数论作为重点内容进行考 ...
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- oracle入门知识实施,新手必须了解的oracle入门知识
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle入门知识 一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数 ...
- ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH
入门知识: 把代码部署到服务器, SSH 2015-07-28 16:28 访问量: 2868 分类: 技术 如何登陆远程服务器呢? $ ssh root@your.server.com -p 334 ...
- python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...
- 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python就业前景广阔.很多 ...
- python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排
众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...
- MySql入门知识(一)
概述 MySQL是一个真正多用户,多线程结构化查询语言数据库服务器.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL的SQL语言是用于访问数据 ...
最新文章
- shell命令 vxworks5.5_vxWorks shell命令
- IPv6静态路由怎么配置?
- 4 [面向对象]-三大特性:多态
- mysql导入数据库某张表_MSSQLServer2005 导出导入数据库中某张表的数据
- 结构类型需要重载GetHashCode和Equals
- java长时间_什么导致Java中长时间的旋转和同步时间?
- 2019年9月数据库流行度排行:MySQL 强劲增长完成深 V 反转
- 全球首发!惯性导航导论(剑桥大学)第九部分
- 动态设置HTML:v-html
- (转)JVM中的OopMap(zz)
- 关于es6中新增的一些方法----数组篇
- extjs fileuploadfield default value
- opencv函数速查笔记
- 歌剧世家DSP电脑调音软件
- 计算机辅助翻译技术工具,浅析计算机辅助翻译技术对译者的影响
- 变色龙配置文件功能介绍
- 掌握Android图像显示原理(上)
- SpringBoot整合MyBatis实现数据增删改查
- 2WD远程控制小车——云端设计
- 前端Photoshop切图快速入门