該緩存機制具有與 ObjectMap 類似的層次結構
在這個機制中,只有需要的對象才會被存儲
如果應用的變化沒有造成緩存中存儲的對象層次之間的變化,不需要調整緩存部分的代碼。
緩存是全局的,如果對象層次結構發生,對程序的修改將基本被限制在緩存這層代碼中,不會造成整個框架和所有測試腳本需要修改的慘狀。
該機制的實現并不復雜。
使用被測試應用的頂層窗口對象作為根對象存儲。
把隸屬于該窗口的對象作為根對象的成員變量存儲 .
按照 ObjectMap 的層次順序存儲對象,下層的作為上層的成員變量。沒有用到的對象層次可以忽略。
在所需該對象為 Null 的時候,getter() 方法調用動態搜索方法獲取對象
當所需對象不為 Null 的時候,getter() 方法直接返回緩存中存儲的對象。
這里將使用這種緩存機制實現剛才的例子,如果這個操作只被調用一次,那么緩存機制將不會與普通的動態搜索方法有區別。但如果這是一個被頻繁調用的操作,那么緩存機制將體現出它的價值,極大的減少對象獲取的時間。
建立一個名為 WordWindow 的對象存儲所有 MS Word 2007 窗口的直屬子對象。這些子對象也可存儲屬于他們的子對象。
代碼 3. WordWindow.java
package appObject;
……
//WordWindow類包含所有在Word窗口中要操作的子對象及該窗口本身
public class WordWindow {
private GuiTestObject viewButton;
private GuiTestObject homeButton;
public GuiTestObject getViewButton(){
if(viewButton == null ){
文章來源于領測軟件測試網 http://www.kjueaiud.com/