AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式 - 编程入门网
可以编写切点以部分根据 Java 5.0 元数据进行匹配。例如,下面修改后 的切点匹配用 @Highlighted 注释修饰的方法执行:
可以通过添加注释到其 getSomeString() 方法,使 mock 目标匹配新的切点 :
优缺点 这项技术还明确地分离了对方面行为与目标应用程序的行为的测试,使测试 变为更独立。如果切点还没有编写为容纳 mock 目标,那么应当通过重新编写它 们得到一个耦合更松散的方面。通过使方面足够一般化,可以影响测试类中的 mock 目标,还会保证它可以容易地让真实类参与方面的行为。 模式 3. 验证更复杂的切点(一个特殊情况) 针对 :横切规范和功能 概述 :上一个 mock 目标是简单的,但是也可以将 mock 目标编写为模拟复 杂的联结点(如 cflow())或者要影响的一系列联结点。 例子:模拟 cflow 假定希望对于下载的报告关闭突出显示。可以加入一个 highlightExceptions切点以排除由 ReportGenerator 调用的任何 getter,如 下所示:
然后可以编写一个 mock ReportGenerator,它调用 HighlightMockTarget 以测试没有进行突出显示:
AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式(12)时间:2011-09-07 IBM Nicholas Lesiecki不过,可以想像为更复杂的匹配情况(例如,somePointcut() && ! cflowbelow(somePointcut()))创建一个类似的 mock 目标。可视化工具不能给 出关于使用运行时检查的切点(如 cflow())的匹配的详细信息。用几个代表性 的 mock 目标检查这种切点是值得的。 结束语 当我看到未测试的代码时,就觉得厌烦。没有好的测试集的代码通常有很多 问题,难于进行有信任度的改变,并且难以重构。不过,如果用方面实现横切行 为,那么就有了测试(并理解)应用程序的横切关注点的新方法。 测试方面与测试对象很相似。这两种测试都需要将行为分解为可以单独测试 的组件。一个要掌握的关键概念是横切关注点分为两个区域。首先是横切规范, 它要回答的是关注点影响的是程序的哪些部分。其次是功能,它回答的是这些点 上会发生什么。如果只使用对象,那么这两个区域是交叉的,因为关注点在应用 程序中是纠缠在一起的。不过,使用了方面后,可以以一个领域为目标或者同时 分别以两个领域为目标。 将方面编写为可测试的,得到的设计好处与通过重构面向对象的代码来实现 可测试性所得到的好处相似。例如,如果将建议的正文转移到一个可独立测试的 类中,那么就可以分析其行为而不用理解它横切应用程序的方式。如果修改切点 以使它们更能被 mock 目标 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |