AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式 - 编程入门网
含应忽略的联结点。
例子:找出不需要的匹配 假定要突出显示标题、产品和搜索结果的汇总。不用像在 清单 1 中那样枚 举 每一个方法,可以说明想要找的是一个更健壮的切点。(关于健壮的切点的更多 内容,请参阅 参考资料 中 Adrian Colyer 的 blog。)下面的切点看来是抓住 了原来的想法:
不过,在用 AJDT 的 cross-references 视图检查切点时,会看到图 2 所示 的内容: 图 2. AJDT cross-references 视图中四个建议的联结点 注意有一个多余的匹配:SearchResult.getWebsite()。您知道这个 Website 不应该突出显示,因此重新编写这个切点以排除不需要的匹配。 AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式(5)时间:2011-09-07 IBM Nicholas Lesiecki优缺点 使用 AJDT 的 cross-references 视图检查横切规范有三个主要的好处。首 先 ,cross-references 视图可以在开发方面时马上给出反馈。其次,它使您可以 容 易地发现难于测试的结果。(要编写验证 getWebsite() 没有 突出显示的测试 , 需要猜出 getWebsite() 可能会出错,或者检查 SearchResult 中每一个 String getter。越不容易出的错误,就越难很好地测试。)第三,自动生成的视图可以 验证正确情况,在代码中验证它们是很麻烦的。例如,如果搜索 highlighter 需 要影响 20 个联结点,那么检查 cross-references 视图比为每一个联结点编写 测试更容易。 使用视图验证的主要缺点是不能自动检查。它需要程序员的自律。匆忙的程 序 员可能看过图 2,却没有发现问题。(下一个模式展示了对这个问题的部分解决 方案。)另一个问题是横切视图只显示了基于静态联结点 shadow 的匹配。换句 话说,如果有依赖于运行时检查的切点,如 cflow() 或者 if(),那么 cross- references 视图不能肯定地说联结点会在运行时匹配,只能说看来如此。 模式 2. 检查随横切比较工具改变 针对 :横切规范 概述 :利用 AJDT 的横切比较功能在重构之前或者其他代码改变前保存项目 的横切图。在完成改变后保存另一个图。(还可以每晚保存一个图以便比较。) 在横切比较工具中比较这些图,以发现受方面影响的联结点所出现的不希望的改 变。注意在撰写本文时,只有 AJDT 提供横切比较工具。 例子:改写一个切点 假定要改正上一个例子中表现出的问题,决定修改切点以使用 Java 5 注释 , 如下所示:
然后在源代码中适当位置上添加注释,例如:
下一步是比较在改变前后所抓取的项目快照,并得到如图 3 所示的结果。如 您所见,重构消除了 getWebsite() 的建议匹配,但是也消除了 getSummary() 的匹配。(它看上去就像没有添加上注释。) 图 3. 在横切比较工具中显示的改变结果 AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式(6)时间:2011-09-07 IBM Nicholas Lesiecki优缺点 这项技术实际上是对上一项技术的优化。通过只显示改变,横切比较工具可 以 帮助防止信息盲点。同时,cross-references 视图要求选择需要分析的建议或 者 类,而横切比较工具使您可以检查整个项目的改变。 缺点是横切比较工具在方面影响多个联结点时会不好用。考虑一个记录所有 公 共方法的日志。这样一个方面在哪怕一天的开发后也会增加十来个新改变,使得 查看其他更重要的改变变得困难了。在真实世界中,横切比较工具可以有很多 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |