手头的项目越来越大,很多以前不会出现的问题开始浮现。

 

比如:我修改了一个基础的类库,却意外的影响了九重天外的客户项目,直接导致一个功能无法实现。我郁闷啊!!!

 

因此开始要有组织、有预谋、有计划的对项目过程进行测试驱动了。最终目标是,我修改了底层某个dll的某个方法,测试框架能够自动帮我找出来所有收到影响的类,全部执行一次回归测试,并发送一份漂亮的报告到我手里。

 

这个目标估计1、2个星期才能实现,不过现在先放出一个非常漂亮的MOCK核心代码。 

 

研究过程

在不断收集各种资料过程中,学习了很多,例如以下关键字,有兴趣的兄弟可以自己搜索一下:

 

testdriven.net, nunit,  typemock, cruiseControl.net, Confluence, JIRE, NUnitForms, WatiN, MBUnit, CSUnit, NBehave, Gallio

ranorex,  dynamicProxy...

 

估计各位有时间看看上面的简介,就能够掌握现在测试驱动的大致发展。

 

  1. nunit的核心代码非常容易理解,大伙自己下载看看就行了。
  2. testdriven.net 的前身是:NUnitAddin, 如果要研究如何testdriven集成到vs,看看不错。
  3. WatiN的核心代码虽然我没有看,不过猜也能猜到,就是调用了IE的核,然后搜索上面的html标签操作。
  4. typeMock有点混蛋,源码混淆了,无法拿到核心技术,不过从介绍来看是源自了castle.DynamicProxy,那么各位可以参观一下一篇非常垃圾的文章,但是起码让我入门了: http://www.cublog.cn/u/23701/showart_1414436.html
  5. 最后,我来到了Moq,开始因为听说是.net3.5,就没有看源码,不过刚才研究了一下顿时非常兴奋。起码Moq能让我解决了50%的工作。

 

接下来就说下Mock技术和测试驱动中的作用。

 

Mock技术 

我最不喜欢老外造名词,所以会用自己的体会去介绍。

mock的本质就是模拟目标对象的一个假对象。 

这个性质在测试驱动中非常有用,例如我的代码是:

        public DateTime GetNextFiredDate(DateTime now, IOrmScheduleTrigger trigger, int triggeredtimes)
        {
            
return GetNextFiredDate(now, trigger.TriggerType, trigger.TriggerExpression, triggeredtimes);
        }

相关文章:

  • 2021-11-18
  • 2021-04-01
  • 2021-07-02
  • 2021-11-24
  • 2021-05-30
  • 2022-12-23
猜你喜欢
  • 2022-01-20
  • 2022-02-07
  • 2021-10-26
  • 2022-12-23
  • 2021-07-12
  • 2022-12-23
  • 2021-12-31
相关资源
相似解决方案