在討論對方面進行單元測試的技術之前,我要簡單討論錯誤類型。橫切行為分為兩個主要部分:行為做什么(我稱之為橫切功能)和行為用在什么地方(我稱之為橫切規范);氐 ATM 的例子,橫切功能檢查調用者的安全憑證。橫切規范檢查 ATM 類中每一個公共方法。
為了實現的真正信任度,需要同時檢查功能和規范(或者不嚴格地說,建議和切點)。在完成這個例子的過程中,我將強調給定的測試模式是驗證橫切功能、規范,還是兩者同時驗證。
注意我將重點放在測試切點、建議和支持它們的代碼上。類型間聲明(和其他方面功能)當然是可測試的。我在本文中展示的一些技巧稍加修改就可以對它們使用。它們還有自己的一組技巧,其中許多是很直觀的。不過為了節省篇幅,我決定不在本文中明確地討論它們。
測試模式編目
我將本文寫成測試面向方面代碼的模式的編目。對于每種模式,我描述了它針對哪種類型的錯誤,對該模式進行總結,提供一個例子并討論該模式的優缺點。編目分為四節:
測試完整的單元 :此節展示了測試完整的系統部分(換句話說,同時測試方面和非方面類)的模式。這種技術是在沒有使用方面時獲得橫切行為信任度的惟一方法,并在使用方面時仍然是一種重要的工具。
使用可視化工具 :這里描述的兩種模式利用了 AspectJ IDE 對 Eclipse 的支持,也稱為 AJDT。嚴格地講,使用可視化工具檢查應用程序的橫切結構不是一種測試技術。不過,它可幫助您理解并獲得對應用程序的橫切關注點的信任。
使用委派 :此節展示可以幫助將前面提到的兩類錯誤分開的兩種模式。通過將一些邏輯從建議中分離到 helper 類中(或者方法中),可以編寫與橫切規范無關的、檢查應用程序橫切行為的測試。
使用 mock 目標 :最后一節包括三種模式,它們使用模擬真實建議目標的“mock 目標”類,可以在不將方面集成到真正目標的條件下測試聯結點匹配和建議行為。
Highlighter 方面
為了展示這個編目中的樣式,我使用了一個實現突出顯示搜索術語(即在搜索結果中突出顯示用戶的查詢術語)的方面。我實現了與在上一例子中展示的方面非常相像的一個方面。該系統要在結果匯總頁、細節頁和應用程序的其他一些地方中突出顯示術語。我在本文中展示的這個例子只橫切一個類,但是原理是一樣的。清單 1 包含 Highlighter 方面的一個實現:
文章來源于領測軟件測試網 http://www.kjueaiud.com/