清单 1. Highlighter 定义了突出显示行为
public aspect Highlighter{
/* ITDs to manage highlighted words */
private Collection
public Collection
return highlightedWords;
}
public void Highlightable.setHighlightedWords(Collection
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(" \"bold\">$0");
}
return highlighted;
}
private Pattern patternForWord(String word) {
return Pattern.compile("\\b\\Q" + word + "\\E\\b",
Pattern.CASE_INSENSITIVE);
}
}
Highlighter 方面捕获联结点的返回值并换成突出显示的版本。它根据存储在 Highlightable 接口中一个类型间字段中的突出显示术语清单选择要突出显示的术语。可以对任何需要表现突出显示行为的类使用 Highlightable 接口,既可以使用在类声明中,也可以使用 declare parents 语句。
在这个例子的初始版本中,我选用一个非常简单的切点。在本文的后面,我将重写这个切点以展示一些测试模式。
I. 测试集成的单元
针对 :横切功能和规范
概述 :如在介绍中说明的,使用方面很容易进行集成测试。这个模式非常简单:就像行为没有实现方面那样为系统编写一个测试。换句话说,将对象放到一起、设置状态、调用方法,然后验证结果。关键是编写一个当方面行为错误或者没有应用到希望它应用的联结点处时会失败的测试。如果方面会影响多个联结点,那么就选择几个代表例子。
例子:Highlighter 的集成测试
在清单 2 中要注意的是,这个测试的操作就像对没有使用方面的应用程序一样。它将对象放到一样、设置状态、调用方法并验证结果。
文章来源于领测软件测试网 https://www.ltesting.net/