.NET开源项目介绍及资源推荐:单元测试 - RIVERSPIRIT - 博客园

导读:
  说到单元测试,大家首先会想到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()
  {
  ClassA ca = 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详细使用方法
  个人认为,看以上两篇中文资料足以学会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()
  {
  ClassA ca = new ClassA();
  int expected = 3 int result = ca.GetResult();
  Assert.AreEqual(expected,result);
  }}
  它所有的操作都是通过IDE中的右键菜单完成,如下图所示:
  
  
  由于跟IDE的集成,可以使我们很快的定位到出错的代码行:
  
  
  学习资源
  由于TestDriven.Net的使用非常简单,所以目前基本没有什么中文文章介绍,大家可以参考一下官方网站上的QuickStart以及我在06年12月份《程序员》杂志上写的一篇关于TestDriven.Net的文章。
  
  三.NunitForms
  NUnitForms从 命名上看,就知道它跟NUnit有关,没错,它是NUnit的一个WinFrom的扩展。它为Windows Forms应用程序提供单元测试和压力测试,可以非常容易的用它为你的Windows Forms类进行自动化测试,它提供了一个Recorder Application,来记录你的操作。我们编写类似于如下代码片断的测试代码:
  ButtonTester button = new ButtonTester("buttonName", "formName");
  ControlTester textBox = new ControlTester("nameOfSomeTextBox");
  Assertion.AssertEquals("defaultText", textBox["Text"];
  textBox["text"] = "newText"
  或者类似于这样的代码进行操作记录:
  //records button.Click() public void Click(object sender, EventArgs args){
  listener.FireEvent(TesterType, sender, "Click");
  }//records: comboBox.Enter("text"); public void TextChanged(object sender, System.EventArgs e){
  listener.FireEvent(TesterType, sender, "Enter", ((ComboBox)sender).Text);
  }//records: comboBox.Select(3); //text of item 3 public void SelectedIndexChanged(object sender, System.EventArgs e){
  EventAction action = new EventAction("Select", ((ComboBox)sender).SelectedIndex);
  action.Comment = ((ComboBox)sender).Text;
  listener.FireEvent(TesterType, sender, action);
  }
  对于NUnitForms,它还有一个兄弟工具叫NUnitASP,
  学习资源
  对于NUnitForms,仍然是没有发现有好的中文资源,大家可以参考官方文档。
  
  四.NUnitAsp
  NUnitAsp可 以说是NUnitForms的兄弟,它也是一个NUnit的扩展,用来自动测试ASP.NET页面。虽然NunitAsp可以完成一些ASP.NET页面 的自动化测试工作,但是在编写测试用例的时候,如果界面上的元素比较多,编写起来会非常的麻烦,这也是为什么NunitAsp一直处于大紫不红的原因。它 可以编写如下代码片断的测试代码:
  public void TestLayout(){
  TextBoxTester name = new TextBoxTester("name", CurrentWebForm);
  TextBoxTester comments = new TextBoxTester("comments", CurrentWebForm);
  ButtonTester save = new ButtonTester("save", CurrentWebForm);
  DataGridTester book = 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(){
  TextBoxTester name = new TextBoxTester("name", CurrentWebForm);
  TextBoxTester comments = new TextBoxTester("comments", CurrentWebForm);
  ButtonTester save = new ButtonTester("save", CurrentWebForm);
  DataGridTester book = new DataGridTester("book", CurrentWebForm);
  Browser.GetPage("http://localhost/GuestBook/GuestBook.aspx");
  name.Text = "Dr. Seuss" comments.Text = "One Guest, Two Guest! Guest Book, Best Book!" save.Click();
  }
  学习资源
  跟自己的兄弟NUnitForms一样,仍然没有好的中文文档,有兴趣的朋友可以参考‘NUnitAsp的官方文档,相对来说还是比较全的,有很多的教程。
  
  总结
  对 于单元测试工具,就简单的介绍这么多,我个人还是推荐使用TestDriven.Net的个人版,至于后面两个NUnit的扩展,大家可以参考一下,在实 际开发中用它们来测试会很麻烦,至少我目前不敢去做这个尝试。还有一个非常值得推荐的单元测试工具Mbunit,有兴趣的朋友可以关注一下,我对它了解并 不多。
  本来想在文章中再介绍一下开源的Mock框架的,感觉太多了,只好单独放一篇文章来介绍了。
  评论:
  頁面測試,可以關注一下 watiN,他可控制到 dialog/frame/js的alert/confirm 的測試
  http://watin.sourceforge.net/
  單元測試的部份,我們是用 NUnitLite
  http://www.codeplex.com/NUnitLite
  功能少nunit很多-_-,但他可以測試 web site project 裏app_code裏的cs
  符合工作的需求,也可參考看看
  对于Mobile的单元测试工具,恐怕很难找,因为netcf对于反射支持有限,而像NUnit这样的工具也用到了反射。最典型的例子就是NDoc,这个对netcf有的时候就爱莫能助了
  ReSharper UnitRun
  "is a free add-in for Microsoft Visual Studio 2005 that allows you to automatically run and profile unit tests. This user-friendly tool detects test fixtures of the supported unit testing frameworks and lets you run or profile them right from the code editor or from Visual Studio's Solution Explorer. "
  免费但不是开源的...
  http://www.jetbrains.com/unitrun/
  VS2007 将支持Mobile 系统的 unit test, 请大家关注。
  另外, VS2005 database professsional 版本已经发布,支持SQL的单元测试 ,请大家试用。

本文转自
http://www.cnblogs.com/RIVERSPIRIT/archive/2007/10/10/919550.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值