测试中的犀牛

  最近,把我的 [url=http://www.codeplex.com/DbEntry]DbEntry[/url] 的客户端源码控制改成了 [url=http://visualsvn.com/]VisualSvn[/url] + [url=http://www.codeplex.com/SvnBridge]SvnBridge[/url] 的方式,感觉这种非独占方式 check-out 很适合广域网用户,只是 SvnBridge 还有一些不完善,于是,下载了它的源码版本,自己编译,在最近一次比较大的 check-in 之后,另一台机器执行 update 总是不成功,于是再去下载最新的 SvnBridge 源码,也没有效果,最后重新 check-out 反而成功,也许是服务器超时造成的?

  在浏览 SvnBridge 的压缩包的时候,发现了它是使用 [url=http://www.codeplex.com/xunit]xunit[/url] 进行单元测试的,这个听说过,据说是原 nunit 作者的新作,利用了更多的 .net 的语言特性,应该是更好用的吧;另外,发现了一个奇怪的 dll 名:Rhino.Mocks.dll。[url=http://www.mozilla.org/rhino/]Rhino[/url] 我记得是一个 Java 实现的 JavaScript 引擎,不过,Rhino.Mocks 是什么鬼?

  搜索 Rhino.Mocks,发现几篇介绍的文章,原来是一个 mock 框架,和那个 JavaScript 引擎没什么关系。

  以前一直都是直接手写 Mock 类的,对于 Mock 框架没有什么认识,最近因为工作的关系,接触到 [url=http://mocklib.sourceforge.net/mocklib3/]MockLib[/url] ,发觉对于一些复杂的接口,用 Mock 框架确实可以减少一些重复劳动。

  在介绍的文章 Rhino.Mocks 中,有 [url=http://www.cnblogs.com/idior/archive/2005/08/08/209351.html]一篇[/url] 介绍的挺好的,做了 EasyMock,JMock,NMock, NMock2 和 Rhino.Mocks 的比较,很不错。文中介绍 Rhino 做 Record 的语法如下:

subMock.Receive(message);
Expect.On(subMock).Call(subMock.MultiplyTwo(5)).Return(10);
mocks.ReplayAll();

  无返回值的函数语法简直太自然了!这里,因为不是使用字符串来描述函数名,所以,有智能提示,有编译时运行检查,也支持重构工具,非常棒。不过,既然这种“Record/Replay”模型这么自然,而另外那种“Expectation”模型也依然存在,可能说明,这种方式还是有一些特殊的地方,不如“Expectation”模型吧。

  看着,突然想到 .net 3.5 的 expression tree,这种延迟运算方式如果运用于“Expectation”模型应该也可以,而且,同样可以取得“Record/Replay”模型的智能提示、编译时运行检查、支持重构工具等特性,简直太完美了!

  不管怎样,先去下载 [url=http://www.ayende.com/Blog/archive/2007/03/28/Rhino-Mocks-3.0-Released.aspx]Rhino Mocks[/url] 再说。到了它的下载页,赫然发现 Rhino Mocks 3.5 Beta - For .Net 3.5 的字样,哈,看来他应该比我早想到这个主意了吧 :D

  再次搜索 Rhino Mocks 3.5,发现了 [url=http://blog.benhall.me.uk/2008/05/rhino-mocks-35-goodbye-record-and.html]一篇介绍的文章[/url],语法上比我想象的复杂一些,不过还是很酷,回头研究一下,或许就使用到项目中去吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值