- 浏览: 543715 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (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 4794最近无聊,玩了玩ubuntu ... -
C#编程中的预处理指令
2010-01-13 11:22 1446在C#中, 虽然编译器没有单独的预处理器,但在处理预处理指令时 ... -
vs 打包winform程序步骤经验总结
2010-01-06 09:47 59321、 应用程序文件夹 : 在应用程序文件夹下新建一文件夹重名为 ... -
处理资源 'http://localhost/ws/Service.asmx' 时出错(iis,.netframework安装顺序造成的错)
2009-12-30 17:10 1961刚刚学习webservices,很多东西都不懂。写了个最简单的 ... -
图解在VS2005利用NUnit进行测试
2009-12-21 12:53 1602一、介绍NUnit是一款用于在.net环境进行单元测试的工具, ... -
如何编写单元测试用例(转载自CSDN)
2009-12-17 17:01 3214一、 单元测试的概念 ... -
NUnit2.0详细使用方法
2009-12-17 17:00 11055 .测试生命周期合约 如果记得test case的定义,其中 ... -
在.NET环境中使用单元测试工具Nunit
2009-12-17 16:56 1093简介编写单元测试是一 ... -
.NET命名空间使用介绍
2009-12-17 11:29 1765在ASP.NET中,.NET Framework为我们 ... -
一种清晰而又简单通用的分页算法
2009-12-17 10:03 6144分页,是WEB开发中面对的最常见的编程,实现方法多种多样。我也 ... -
C#数据结构-双向链表
2009-12-17 09:54 1992在结点中设两个引用域,一个保存直接前驱结点的地址,叫prev, ... -
读书笔记c#高级编程 委托和事件
2009-12-17 09:49 1129在C#中使用一个类时,分两个阶段。首先需要定义这个类,即告诉编 ... -
深入理解C#中的委托和事件:委托的定义
2009-12-16 16:04 1680委托和事件在 .Net Framework中的应用非常广泛,然 ... -
C#委托和事件(简单示例)
2009-12-16 15:46 38691.委派的实现过程。 首先来看一下委派,委派其实就是方法的传 ... -
关于配置文件的读取
2009-11-18 16:52 2190在1.0/1.1版本,都流行的 ... -
C# WInForm 无框窗体移动
2009-11-12 13:56 2055调用APIusing System.Runtime.Inter ... -
在C# 中如何动态地添加控件
2009-09-09 11:05 3695通常在写程序的时候 ... -
ListBox相互移动
2009-08-14 17:33 1465using System;using System.Colle ... -
TreeView-demo
2009-08-14 17:22 1354using System;using System.Co ... -
TreeView高效绑定数据
2009-08-13 17:28 4147前俩个项目都是做政府的门户网,他们的栏目、部门都要以树形展示, ...
相关推荐
本文将详细介绍NUnit2.0的使用方法,帮助开发者更好地理解和运用这个强大的工具。 **一、安装与引入** 首先,你需要从NUnit的官方网站下载NUnit2.0的安装包,它通常包含一个dll文件,如nunit.framework.dll,这是...
这个问题促使我相对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议,使本文更加完善.如果你对NUnit还不是很了解的话,...
NUNIT2.0 软件测试用具(C#.NET)
C#的一个学习软件,只希望与大家一起分享
使用NUnit进行测试时,开发者可以创建测试类,每个类包含多个测试方法。这些测试方法通常以"Test"开头,以便NUnit识别它们。通过使用[NUnit Test Attributes]...
通过使用[NUnit GUI Runner](https://docs.nunit.org/articles/nunit-2.5/nunit-gui-runner.html)或[NUnit Console Runner](https://docs.nunit.org/articles/nunit-2.5/nunit-console-runner.html),开发者可以轻松...
5. **测试结果报告**:NUnit能够生成详细的测试报告,包括成功、失败、错误和忽略的测试。这些报告有助于快速定位问题,理解测试覆盖率。 6. **扩展性**:NUnit有一个插件系统,允许开发自定义的测试适配器、约束和...
3. **NUnit2.pdf**:这可能是NUnit的用户手册或者指南,详细介绍了如何使用NUnit进行单元测试,包括创建测试、运行测试套件、断言方法和其他高级特性。 4. **license.txt**:这是NUnit的许可协议,规定了软件的使用...
NUnit是一个用于.NET应用程序的单元测试框架,它支持.NET Framework的多个版本,包括.NET 2.0以上。通过NUnit,开发者可以编写可重复运行的测试用例,以验证代码的各个模块是否按预期工作。NUnit提供了丰富的断言...
随包提供的“使用说明.htm”和“使用说明.txt”文件,是NUnit的使用指南,可能包含如何配置、编写和运行测试的详细步骤。这些文档通常会涵盖如何创建测试类、定义测试方法、组织测试集以及如何读取和理解测试结果等...
NUnit Test Generator是一个自动生成测试用例的工具,可以编辑生成用例的模板,直接双击KellermanSoftware.NUnit-Test-Generator.exe文件就可以使用,需要的朋友可以下载。如使用中出现问题请直接给留言。
NUnit是一个开源的、广泛使用的单元测试框架,它允许开发人员编写代码来测试自己的.NET应用程序或库的功能。 描述中的“用于.NET测试的不错的软件”进一步确认了NUnit在.NET生态系统中的重要角色,作为一个高效的...
NUnit支持多种类型的测试,包括方法级别的断言,如Assert.AreEqual()来验证预期结果,以及测试固定装置来设置测试环境和清理操作。它还支持测试的分类和过滤,方便大型项目的管理和执行。此外,NUnit还提供了强大的...
"NUnit2.pdf"很可能是NUnit的使用指南或教程,涵盖了如何安装、配置和使用NUnit进行单元测试的详细步骤。通常,这样的文档会包含以下内容: 1. **安装与配置**:解释如何下载并安装NUnit,包括如何运行提供的msi...
NUnit 是一个广泛使用的开源测试框架,主要用于 .NET 开发中的单元测试。它是 .NET 社区中的首选工具,因为它提供了简单易用的API和丰富的断言库,使得开发人员可以方便地对代码进行验证,确保其功能正确无误。 在...
在使用NUnit进行测试驱动开发(TDD)时,首先编写测试用例,然后编写最小量的生产代码来使测试通过。这种开发方式有助于确保代码的健壮性和可维护性,因为它强制开发者思考各种可能的边界条件和错误情况。 NUnit...
在使用NUnit2.5.9时,开发者通常会创建一个测试项目,然后在项目中添加待测试的代码引用,接着编写测试fixture和测试方法,最后运行NUnit测试宿主来执行这些测试。如果所有测试都通过,那么可以有信心地说,代码的这...
在进行单元测试时,了解如何编写 NUnit 测试用例、使用断言方法(如 `Assert.AreEqual`、`Assert.Throws` 等)以及如何组织测试结构(如测试 fixture、测试方法等)都是必要的技能。NUnit 提供了丰富的文档和示例,...