- 浏览: 531445 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (230)
- java (87)
- c/c++/c# (39)
- ASP.net MVC (4)
- eclipse/visual studio (3)
- tomcat/weblogic/jetty (13)
- linux/unix/windows (20)
- html/javascript/jquery/kendo/bootstrap/layui/vue/react (31)
- hibernate/struts/spring/mybatis/springboot (21)
- lucene/solr/ELK (2)
- shiro (0)
- oracle/sqlserver/mysql/postgresql (23)
- shell/python/ruby (6)
- android (0)
- maven/ant (1)
- freemarker/thymeleaf/velocity (1)
- open source project (41)
- cache/memcached/redis (0)
- nosql/hadoop/hbase/mongodb (0)
- system architecture/dubbo/zookeeper (0)
- software testing (0)
- system optimization (0)
- system security (0)
- tcp/udp/http (2)
- roller/wordpress (2)
- 工具收藏 (8)
- 文摘 (4)
- 生活 (0)
最新评论
-
coconut_zhang:
这个demo 非常完整了,是指下面说的那个html 模版,模版 ...
flying sauser, thymeleaf实现PDF文件下载 -
a93456:
你好,你有完整的demo吗? String template这 ...
flying sauser, thymeleaf实现PDF文件下载 -
yujiaao:
fn 函数循环是没有必要的啊,可以改成
protecte ...
Java 笛卡尔积算法的简单实现 -
安静听歌:
设置了.setUseTemporaryFileDuringWr ...
使用jxl导出大数据量EXCEL时内存溢出的解决办法 -
q280499693:
写的很详细,但是我现在想知道他们是怎么定位log4j.prop ...
关于SLF4J结合Log4j使用时日志输出与指定的log4j.properties不同
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既可以了。就不引用例子了。
发表评论
-
CMPP短信网关客户端发送程序
2010-04-06 11:12 4714最近无聊,玩了玩ubuntu ... -
C#编程中的预处理指令
2010-01-13 11:22 1400在C#中, 虽然编译器没有单独的预处理器,但在处理预处理指令时 ... -
vs 打包winform程序步骤经验总结
2010-01-06 09:47 58441、 应用程序文件夹 : 在应用程序文件夹下新建一文件夹重名为 ... -
处理资源 'http://localhost/ws/Service.asmx' 时出错(iis,.netframework安装顺序造成的错)
2009-12-30 17:10 1908刚刚学习webservices,很多东西都不懂。写了个最简单的 ... -
图解在VS2005利用NUnit进行测试
2009-12-21 12:53 1555一、介绍NUnit是一款用于在.net环境进行单元测试的工具, ... -
如何编写单元测试用例(转载自CSDN)
2009-12-17 17:01 3161一、 单元测试的概念 ... -
NUnit2.0详细使用方法
2009-12-17 17:00 10675 .测试生命周期合约 如果记得test case的定义,其中 ... -
在.NET环境中使用单元测试工具Nunit
2009-12-17 16:56 1056简介编写单元测试是一 ... -
.NET命名空间使用介绍
2009-12-17 11:29 1710在ASP.NET中,.NET Framework为我们 ... -
一种清晰而又简单通用的分页算法
2009-12-17 10:03 6089分页,是WEB开发中面对的最常见的编程,实现方法多种多样。我也 ... -
C#数据结构-双向链表
2009-12-17 09:54 1956在结点中设两个引用域,一个保存直接前驱结点的地址,叫prev, ... -
读书笔记c#高级编程 委托和事件
2009-12-17 09:49 1096在C#中使用一个类时,分两个阶段。首先需要定义这个类,即告诉编 ... -
深入理解C#中的委托和事件:委托的定义
2009-12-16 16:04 1641委托和事件在 .Net Framework中的应用非常广泛,然 ... -
C#委托和事件(简单示例)
2009-12-16 15:46 38291.委派的实现过程。 首先来看一下委派,委派其实就是方法的传 ... -
关于配置文件的读取
2009-11-18 16:52 2068在1.0/1.1版本,都流行的 ... -
C# WInForm 无框窗体移动
2009-11-12 13:56 2014调用APIusing System.Runtime.Inter ... -
在C# 中如何动态地添加控件
2009-09-09 11:05 3647通常在写程序的时候 ... -
ListBox相互移动
2009-08-14 17:33 1429using System;using System.Colle ... -
TreeView-demo
2009-08-14 17:22 1317using System;using System.Co ... -
TreeView高效绑定数据
2009-08-13 17:28 4099前俩个项目都是做政府的门户网,他们的栏目、部门都要以树形展示, ...
相关推荐
这个问题促使我相对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,...
单元测试工具NUnit2.0主要用于C#程序的测试
NUNIT2.0 软件测试用具(C#.NET)
给初学者介绍关于NUnit2.0详细使用方法
C#的一个学习软件,只希望与大家一起分享
NUnit-2.4.8 For .net2.0
NUnit Test Generator是一个自动生成测试用例的工具,可以编辑生成用例的模板,直接双击KellermanSoftware.NUnit-Test-Generator.exe文件就可以使用,需要的朋友可以下载。如使用中出现问题请直接给留言。
NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员
NUnit 2.4.1 简体中文版(.net1.1_2.0)安装程序
NUnit-2.4.3-net-2.0.zip
NUnit-2.2.9-net-2.0-dbg 中文 非常好用的Test工具
NUnit是一个单元测试框架,专门针对于.NET来写的.其实在前面有JUnit(Java),CPPUnit(C++),他们都是xUnit的一员
.Net 开发人员必备NUnit,方便测试。版本NUnit-2.4.8-net-2.0
微软.net下的一个自动化测试工具,整合在VS 2005中一起使用
好用的单元测试工具,单元测试
比较好用的单元测试工具,希望能够帮助到大家
用于.NET测试的不错的软件
您可以覆盖原版或就地解压就地使用。 中文版只提供 .net 2.0 1.1版本考虑到大家用的少了,所以没有编译。 如有需要, 您可以向本人索要中文源码, 或者索要.net 1.1版。 注意 , 我会在第一时间发布简体中文版的...