快速业务通道

AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
写这个切点以展示一些测试模式。

I. 测试集成的单元

针对 :横切功能和规范

概述 :如在介绍中说明的,使用方面很容易进行集成测试。这个模式非常简 单:就像行为没有实现方面那样为系统编写一个测试。换句话说,将对象放到一 起、设置状态、调用方法,然后验证结果。关键是编写一个当方面行为错误或者 没有应用到希望它应用的联结点处时会失败的测试。如果方面会影响多个联结点 ,那么就选择几个代表例子。

例子:Highlighter 的集成测试

在清单 2 中要注意的是,这个测试的操作就像对没有使用方面的应用程序一 样。它将对象放到一样、设置状态、调用方法并验证结果。

清单 2. 对 Highlighter 的集成测试

public class HighlightSearchResultsIntegrationTest extends TestCase {  Collection<String> words;  private SearchResult result;  public void setUp() throws Exception {    super.setUp();   words = new ArrayList<String>();    words.add("big");   words.add("grrr");   result = new SearchResult();   result.setTitle("I am a big bear!");    result.setSummary("grrr growl!");   result.setHighlightedWords (words);  }  public void testHighlighting() {    String expected = "I am a <span class=\"bold\">big</span> bear!";   assertEquals(expected, result.getTitle());    expected = "<span class=\"bold\">grrr</span> growl!";    assertEquals(expected, result.getSummary());  } }

AOP@Work: 对方面进行单元测试-验证横切行为的八种新模式(4)

时间:2011-09-07 IBM Nicholas Lesiecki

优缺点

不管是否使用 AOP,集成测试的代价和优点是类似的。不管哪种情况,主要 的 好处是验证代码的高层目标(换句话说,正确突出显示标题和结束语)。在进行 大的重构时它会提供帮助。它还会找出当组件交互时才会出现的问题。

不过,只进行集成测试会带来一些问题。如果 HighlightSearchResultsIntegrationTest 失败,那么这可能是因为建议逻辑或 者所涉及的其他类(如 SearchResult)有错误,而使方面根本没有运行。事实 上 ,我在开发这个集成测试例子时就遇到了这种情况。我花了 20 分钟试图搞清楚 为什么方面没有运行,最后发现在正则表达式中有一个暗藏的问题!

集成测试还需要更复杂的设置和断言,这使它们比分别测试单独的方面更难 编 写。并且很难用集成测试模拟代码需要正确处理的所有临界情况。

横切数个类的行为给集成测试带来了一个特定问题。假定对应用程序中的所 有 类有统一的异常处理。我们不想对每一个类测试这个新行为。相反,希望选择一 个代表性的例子。但是如果选择了特定的 域类(比如 Customer 类),并测试 了 它的错误处理方面,那么就会有模糊测试目的的可能性。测试是验证 Customer 的行为还是验证应用程序的错误处理呢?

II. 使用可视化工具

关于测试广泛分布的横切关注点的一个难题是它会报告太多的联结点。执行 并 检查所有的匹配是个大麻烦。(另一方面,意外加入不需要的联结点会更糟糕) 。相应地,下面两个模式展现了使用在 AJDT 这样的工具中提供的人工检测横切 视图补充正常测试的好处。(在撰写本文时,AspectJ 与 AJDT 结合提供了大多 数可视化支持,不过,JBoss AOP 和 JBoss IDE 等其他组合同样提供了很好的 可 视化工具。)

模式 1. 可视化地检查横切

针对 :横切规范

概述 :在开发方面时使用 AJDT 的 cross-references 视图查看它要建议哪 些联结点。人工验证清单是否完整,并且不包

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号