快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
过为了节省篇幅,我 决定不在本文中明确地讨论它们。

测试模式编目

我将本文写成测试面向方面代码的模式的编目。对于每种模式,我描述了它 针 对哪种类型的错误,对该模式进行总结,提供一个例子并讨论该模式的优缺点。 编目分为四节:

测试完整的单元 :此节展示了测试完整的系统部分(换句话说,同时测试方 面和非方面类)的模式。这种技术是在没有使用方面时获得横切行为信任度的惟 一方法,并在使用方面时仍然是一种重要的工具。

使用可视化工具 :这里描述的两种模式利用了 AspectJ IDE 对 Eclipse 的 支持,也称为 AJDT。严格地讲,使用可视化工具检查应用程序的横切结构不是 一 种测试技术。不过,它可帮助您理解并获得对应用程序的横切关注点的信任。

使用委派 :此节展示可以帮助将前面提到的两类错误分开的两种模式。通过 将一些逻辑从建议中分离到 helper 类中(或者方法中),可以编写与横切规范 无关的、检查应用程序横切行为的测试。

使用 mock 目标 :最后一节包括三种模式,它们使用模拟真实建议目标的 “mock 目标”类,可以在不将方面集成到真正目标的条件下测试联结点匹配和 建 议行为。

Highlighter 方面

为了展示这个编目中的样式,我使用了一个实现突出显示搜索术语(即在搜 索 结果中突出显示用户的查询术语)的方面。我实现了与在上一例子中展示的方面 非常相像的一个方面。该系统要在结果汇总页、细节页和应用程序的其他一些地 方中突出显示术语。我在本文中展示的这个例子只横切一个类,但是原理是一样 的。清单 1 包含 Highlighter 方面的一个实现:

清单 1. Highlighter 定义了突出显示行为

public aspect Highlighter{  /* ITDs to manage highlighted words */  private Collection<String> Highlightable.highlightedWords;  public Collection<String> Highlightable.getHighlightedWords() {    return highlightedWords;  }  public void Highlightable.setHighlightedWords(Collection<String>    highlightedWords){   this.highlightedWords = highlightedWords;  }  public pointcut highlightedTextProperties() :    (    execution(public String getProduct())   || execution(public String getTitle())   || execution(public String getSummary())   );  String around(Highlightable highlightable) :    highlightedTextProperties() && this(highlightable)  {    String highlighted = proceed(highlightable);   for (String word : highlightable.getHighlightedWords()) {    Pattern pattern = patternForWord(word);    Matcher matcher = pattern.matcher (highlighted);    highlighted = matcher.replaceAll("<span class=      \"bold\">$0</span>");   }      return highlighted;  } private Pattern patternForWord (String word) {  return Pattern.compile("\\b\\Q" + word + "\\E\\b",   Pattern.CASE_INSENSITIVE); }  }

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

时间:2011-09-07 IBM Nicholas Lesiecki

Highlighter 方面捕获联结点的返回值并换成突出显示的版本。它根据存储 在 Highlightable 接口中一个类型间字段中的突出显示术语清单选择要突出显示的 术语。可以对任何需要表现突出显示行为的类使用 Highlightable 接口,既可 以 使用在类声明中,也可以使用 declare parents 语句。

在这个例子的初始版本中,我选用一个非常简单的切点。在本文的后面,我 将 重

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号