清單 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 接口中一個類型間字段中的突出顯示術語清單選擇要突出顯示的術語?梢詫θ魏涡枰憩F突出顯示行為的類使用 Highlightable 接口,既可以使用在類聲明中,也可以使用 declare parents 語句。
在這個例子的初始版本中,我選用一個非常簡單的切點。在本文的后面,我將重寫這個切點以展示一些測試模式。
I. 測試集成的單元
針對 :橫切功能和規范
概述 :如在介紹中說明的,使用方面很容易進行集成測試。這個模式非常簡單:就像行為沒有實現方面那樣為系統編寫一個測試。換句話說,將對象放到一起、設置狀態、調用方法,然后驗證結果。關鍵是編寫一個當方面行為錯誤或者沒有應用到希望它應用的聯結點處時會失敗的測試。如果方面會影響多個聯結點,那么就選擇幾個代表例子。
例子:Highlighter 的集成測試
在清單 2 中要注意的是,這個測試的操作就像對沒有使用方面的應用程序一樣。它將對象放到一樣、設置狀態、調用方法并驗證結果。
文章來源于領測軟件測試網 http://www.kjueaiud.com/