运用设计模式编写易于单元测试代码.docx

运用设计模式编写易于单元测试代码.docx

ID:50363690

大小:32.74 KB

页数:2页

时间:2020-03-08

运用设计模式编写易于单元测试代码.docx_第1页
运用设计模式编写易于单元测试代码.docx_第2页
资源描述:

《运用设计模式编写易于单元测试代码.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、运用设计模式编写易于单元测试代码 单元测试是软件开发的一个重要组成部分,通过在软件设计、开发的过程中合理地运用设计模式,不但为系统重构、功能扩展及代码维护提供了方便,同时也为单元测试的实施提供了极大的灵活性,可以有效降低单元测试编码的难度,更好地保证软件开发的质量。引言设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述,通过在系统设计中引入合适的设计模式可以为系统实现提供更大的灵活性,从而有效地控制变化,更好地应对需求变更或者按需变更系统运行路径等问题。单元测试是软件开发的一个重要组成部分,是与编码实现同步进行的开发活动,这一点已成为软件开发者的共识。适度的单元测试不

2、但不会影响开发进度,反而可以为开发过程提供很好的控制,为软件质量、系统重构等提供有力的保障,并且,当后续系统需求发生变更、BugFix 或功能扩展时,能很好地保证已有实现不会遭到破坏,从而使得程序更易于维护和修改。 MartinFowler、KentBeck、RobertMartin 等软件设计领域泰斗更是极力倡导测试先行的测试驱动开发(TestDrivenDevelopment,TDD)的开发方式。单元测试主要用于测试细粒度的程序单元,如类的某个复杂方法的正确性,也可以根据需要综合测试某个操作所涉及的多个相互联系的类的正确性。在很多情况下,相互联系的多个类中有些类比较简单,为这些简单类单

3、独编写单元测试用例往往不如将它们与使用它们的类一起进行测试有意义。模拟对象(MockObjects)是为模拟被测试单元所使用的外围对象、设备(后文统一简称为外部对象)而设计的一种特殊对象,它们具有与外部对象相同的接口,但实现往往比较简单,可以根据测试的场景进行定制。由于单元测试不是系统测试,方便、快速地被执行是单元测试的一个基本要求,直接使用外部对象往往需要经过复杂的系统配置,并且容易出现与欲测试功能无关的问题;对于一些异常的场景,直接使用外部对象可能难以构造,而通过设计合适的 MockObjects,则可以方便地模拟需要的场景,从而为单元测试的顺利执行提供有效的支持。本文根据笔者经验,介

4、绍了几种典型的设计模式在系统设计中的应用,及由此为编写单元测试带来的方便。从对象创建开始由于需要使用 MockObjects 来模拟外部对象的功能,因此必须修改正常的程序流程,使得被测试功能模块与 MockObjects,而不是外部对象进行交互。要做到这一点,首先要解决的问题就是对象创建,即在原本创建外部对象的地方创建 MockObjects,因此在设计、实现业务逻辑时需要注意从业务逻辑中分离出对象创建逻辑。FactoryMethod 是一种被普遍运用的创建型模式,用于将对象创建的职责分离到独立的方法中,并通过子类化来实现创建不同对象的目的。如果被测试单元所使用的外部对象是通过 Facto

5、ryMethod 创建的,则可以通过从已有被测试的 Factory 类派生出一个新的 MockFactory,以创建 MockObjects,并在 setUp 测试中创建 MockFactory,从而间接达到对被测试类进行测试的目的。下面的代码片段展示了具体的做法://BaseObjects.javapackagecom.factorymethod.demo;publicinterfaceBaseObjects{voidfunc();}//OuterObjects.javapackagecom.factorymethod.demo;publicclassOuterObjectsimplem

6、entsBaseObjects{publicvoidfunc(){System.out.println("OuterObjects.func");}}//LogicToBeTested.java,codetobetestedpackagecom.factorymethod.demo;publicclassLogicToBeTested{publicvoiddoSomething(){BaseObjectsb=createBase();b.func();}publicBaseObjectscreateBase(){returnnewOuterObjects();}(ps:本文章来源于北大青鸟

7、广安门校区官网)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。