说到单元测试,大家首
先会想到NUnit
,但对于NUnit
来说
还存在着一些不足,比如说它不能够与VS.NET IDE
集成、扩展能力比较差等,除此之外我们还
需要一些自动化的测试工具,本文将简单介绍一下如下几种单元测试工具以及推荐一些学习资源。
1
.NUnit
2
.TestDriven.Net
3
.NUnitForms
4
.NUnitAsp
一.NUnit
提起大名鼎鼎的NUnit
,我想没有几个不知道吧?NUnit
是一个
专门针对于.NET
的单元测试框架。在这之前有针对Java
的JUnit,
针对C++
的CPPUnit
,它们都是属于xUnit
家族。 NUnit
是xUnit
家族种的第4
个主打产品,
完全由C#
语言来编写,
并且编写时充分利用了许多.NET
的特性,
比如反射,
客户属性等等,最重要的一点是它适合于所有.NET
语
言。
编写一段简单的单元测
试代码:
[TestFixture]
public
class
TestDatabase
{
[Test]
public
void
TestWithDebugger()
{
ClassAca
=
new
ClassA();
int
expected
=
3
;
int
result
=
ca.GetResult();
Assert.AreEqual(expected,result);
}
}
NUnit的使用非常简单,运行
后如下图所示:
NUnit
虽然在使用上非常简单,赢得了一部分用户,甚至于微软在企业库的源码中也提供了使用NUnit
测试的版本,但是NUnit
让我最不爽的地方
是没有提供Visual Studio IDE
插件,这样如果做单元测试,会发现自己每天忙于奔波
于IDE
和NUnit GUI
之间,不停的
在切换窗口;还有一点NUnit
虽然跟JUnit
是
兄弟,但是它的威望和能力相较Junit
就差远了,尤其是扩展能力,后面我会介绍到一个NUnit
的WinForm
插件。
官方主页:http://www.nunit.org/
学习资源
1
.NUnit
的官方文档
2
.园子里LIVE
的NUnit详细使用方法
3
.Aero
的实践单元测试(3)-Using NUnit
个人认为,看以上两篇
中文资料足以学会NUnit
的使用,它的难点在于测试用例的编写上,而不是工具本身的使用。
二.TestDriven.Net
TestDriven.Net
列在开源项目介绍里面其实有些不太合适,因为它现在已经是一种商业化的工
具,只有个人版可以免费下载使用,个人认为在开发中个人版的功能已经足够了,之所以我要把它放在这里介绍,是因为它太优秀了。前面说的NUnit
,虽然使用非常简单,但是它不能与我们的.NET
开
发环境集成起来,而TestDriven.Net
就是这样一款以插件的形式集成在Visual Studio
中的单元测试工具,它的前身是NUnitAddIn
,
由Jamie Cansdale
大师开发,一开始作者只是想做一个NUnit
插件集成到Visual Studio
中,经
过多次版本更新,NUnitAddIn
在2004
年9
月底更名为TestDriven.NET
,并在当年
的12
月初发布了它的第一个Release
版
本,即TestDriven.NET 1.0
。在今年的10
月
底,终于迎来了TestDriven.NET 2.0
版本的发布,最新的2.0
版本集成了.NET Reflector
、NConver
、NConverExplorer
、TypeMock.NET
等,功能更加强大,我们还是使用前面的例子:
[TestFixture]
public
class
TestDatabase
{
[Test]
public
void
TestWithDebugger()
{
ClassAca
=
new
ClassA();
int
expected
=
3
;
int
result
=
ca.GetResult();
Assert.AreEqual(expected,result);
}
}
它所有的操作都是通过IDE
中
的右键菜单完成,如下图所示:
由于跟IDE
的集成,可以使我们很快的定位到出错的代码行:
官方主页:http://www.testdriven.net/
学习资源
由于TestDriven.Net
的使用非常简单,所以目前基本没有什么中文文章介绍,大家可以参考一下官方网站上
的QuickStart
以
及我在06
年12
月份《程序员》杂志上写的
一篇关于TestDriven.Net
的文章。
三.NunitForms
NUnitForms
从命名上看,就知道它跟NUnit
有关,没
错,它是NUnit
的一个WinFrom
的
扩展。它为Windows Forms
应用程序提供单元测试和压力测试,
可以非常容易的用它为你的Windows Forms
类
进行自动化测试,它提供了一个Recorder Application
,来记录你的操作。我们编
写类似于如下代码片断的测试代码:
ButtonTesterbutton
=
new
ButtonTester(
"
buttonName
"
,
"
formName
"
);
ControlTestertextBox
=
new
ControlTester(
"
nameOfSomeTextBox
"
);
Assertion.AssertEquals(
"
defaultText
"
,textBox[
"
Text
"
];
textBox[
"
text
"
]
=
"
newText
"
;
或者类似于这样的代码进行操作记录:
//
recordsbutton.Click()
public
void
Click(
object
sender,EventArgsargs)
{
listener.FireEvent(TesterType,sender,
"
Click
"
);
}
//
records:comboBox.Enter("text");
public
void
TextChanged(
object
sender,System.EventArgse)
{
listener.FireEvent(TesterType,sender,
"
Enter
"
,((ComboBox)sender).Text);
}
//
records:comboBox.Select(3);
//
textofitem3
public
void
SelectedIndexChanged(
object
sender,System.EventArgse)
{
EventActionaction
=
new
EventAction(
"
Select
"
,((ComboBox)sender).SelectedIndex);
action.Comment
=
((ComboBox)sender).Text;
listener.FireEvent(TesterType,sender,action);
}
对于NUnitForms
,它
还有一个兄弟工具叫NUnitASP
,
官方主页:http://nunitforms.sourceforge.net/
学习资源
对于NUnitForms
,仍然是没有发现有好的中文资源,大家可以参考官方文档
。
四.NUnitAsp
NUnitAsp
可以说是NUnitForms
的兄弟,它也是一
个NUnit
的扩展,用来自动测试ASP.NET
页
面。虽然NunitAsp
可以完成一些ASP.NET
页
面的自动化测试工作,但是在编写测试用例的时候,如果界面上的元素比较多,编写起来会非常的麻烦,这也是为什么NunitAsp
一
直处于大紫不红的原因。它可以编写如下代码片断的测试代码:
public
void
TestLayout()
{
TextBoxTestername
=
new
TextBoxTester(
"
name
"
,CurrentWebForm);
TextBoxTestercomments
=
new
TextBoxTester(
"
comments
"
,CurrentWebForm);
ButtonTestersave
=
new
ButtonTester(
"
save
"
,CurrentWebForm);
DataGridTesterbook
=
new
DataGridTester(
"
book
"
,CurrentWebForm);
Browser.GetPage(
"
http://localhost/GuestBook/GuestBook.aspx
"
);
AssertVisibility(name,
true
);
AssertVisibility(comments,
true
);
AssertVisibility(save,
true
);
AssertVisibility(book,
false
);
}
public
void
TestSave()
{
TextBoxTestername
=
new
TextBoxTester(
"
name
"
,CurrentWebForm);
TextBoxTestercomments
=
new
TextBoxTester(
"
comments
"
,CurrentWebForm);
ButtonTestersave
=
new
ButtonTester(
"
save
"
,CurrentWebForm);
DataGridTesterbook
=
new
DataGridTester(
"
book
"
,CurrentWebForm);
Browser.GetPage(
"
http://localhost/GuestBook/GuestBook.aspx
"
);
name.Text
=
"
Dr.Seuss
"
;
comments.Text
=
"
OneGuest,TwoGuest!GuestBook,BestBook!
"
;
save.Click();
}
官方主页:http://nunitasp.sourceforge.net/index.html
学习资源
跟自己的兄弟NUnitForms
一样,仍然没有好的中文文档,有兴趣的朋友可以参考‘NUnitAsp
的官方文档
,相对来说还是比较全
的,有很多的教程。
总结
对于单元测试工具,就
简单的介绍这么多,我个人还是推荐使用TestDriven.Net
的个人版,至于后面两个NUnit
的扩展,大家可以参考一下,在实际开发中用它们来测试会很麻烦,至少我目前不敢去做这个尝试。还有
一个非常值得推荐的单元测试工具Mbunit
,有兴趣的朋友可以关注一下,我对它了解并不多。
本来想在文章中再介绍
一下开源的Mock
框架的,感觉太多了,只好单独放一篇文章来介绍了。
分享到:
相关推荐
先进的.NET MVC开源工作流快速开发平台 - RoadFlow RoadFlow是一款集成工作流引擎的ASP.NET MVC快速开发平台,由从事多年工作流开发与实施的技术团队开发。该工作流平台是根据多年对企事业单位工作流应用经验总结而...
全开源代码,测试请注意开启键盘大写。控制方式:大写的J K L I 控制坦克方向,F发弹 二、注意事项 1、开发环境为Visual Studio 2013,使用.net 4.0开发。 适合人群:新手及有一定经验的开发人员
毕设&课设&项目&实训-仓库管理系统,移动端APP开源项目,支持Android、iOS,基于.NET(C#、VB)。SmoWMS仓库管理系统 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、...
第12章综合介绍多种商业的及开源的测试框架和工具。第四部分(第13章)告诉你如何说服对采用最佳实践存在反感和偏见的组织和个人。本书还附有评估、跟踪最佳实践的记分卡。 译者序 前言 第1章 冷静待之 1.1 实践...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
此视频简单的演示了,legend1.0的编译过程,运行测试过程,欢迎喜欢的朋友下载使用。如果下载不成功或视频文件有问题,请发邮件至yuembed@126.com索取 Legend交流群:49288783,欢迎加入 源码下载: ...
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++...
本程序是一个开源的进销存管理系统。 本系统为 VS2010 开发,数据库为 MSSQL2008R2,使用了 MVC3 Linq to SQL 技术实现。 本程序推荐使用浏览器为 IE8,使用其他浏览器可能会出现页面布局混乱现象。 数据库中是...
X2Blog的目标是提供一个具有... 本系统使用了两个出色的开源项目如下: 基于web的html编辑器asp.net控件,地址是:http://www.fckeditor.net/ 浏览器端Javascript的一个开发框架prototype:http://prototype.conio.net/
微信小程序,源码资源,适合做毕业设计,课程设计等。所有源码均经过测试,可直接运行,有需要的可直接下载
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++...
目前的目标是应用这种组合做一款开源的人力资源系统。 现在发布的是第一阶段的代码: 应用Spring.net+NHibernate实现数据持久. 封装了泛型DAO和泛型Service 通过配置,已经实验通过双数据库的方案 今后是准备权限与...
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++...
为了推广学习DevExtreme在Asp.Net.Core中的应用,本源码在DevExpress19.2.4产品发布的基础上, 专门对DevExtreme进行了Asp.Net… 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化...
1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合...
TestNG 的创造者是 Cedric Beust,他在 Java 编程领域非常出名,是 EJB 3 专家组的成员,也是其他一些流行的开源项目(例如 EJBGen 和 Doclipse)的创造者。 示例测试代码: package example1; import org.testng....
[Asp.net+SQL]仿阿里巴巴B2B电子商务系统_hyb2b 1.把"Web"文件夹内的文件拷贝到某个文件夹 2.在IIS中新建站点,指向该文件夹,如果新建虚拟路径,会导致一些图片的不正常显示. 3."Database"文件夹内有数据库文件hyb2...
第12章综合介绍多种商业的及开源的测试框架和工具。第四部分(第13章)告诉你如何说服对采用最佳实践存在反感和偏见的组织和个人。本书还附有评估、跟踪最佳实践的记分卡。 《.NET最佳实践》 译者序 前 言 第1...
1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合...
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++...