在編寫的過程中,發現對于獨立的子窗體的處理還是比較方便和簡單的。這些窗體的普遍特點就是結構簡單,功能單一,所以對應的處理過程也比較方便。但是對于主窗體來講,就非常不一樣了?梢哉f,一個系統中的絕大多數窗體,都包含在主窗體中,那么,對于主窗體上的控件的定位問題,就沒有我們剛開始設想得那么簡單了。
最大的問題,在于重復的問題。我們一般通過控件的一些特征描述,來描述一個控件。但是,在主窗體中,往往擁有相同特征描述的控件不止一個。這是非常有可能存在的事實。
并且,由于很多控件的重疊特性(有些控件被覆蓋住了),導致最初設想的“方位”特性,也有可能出錯!這個問題困擾我們很久,不光是難以定位控件,也會讓測試代碼不易讀和維護,且受界面影響的可能性就變得更大了。
在解決這個問題的過程中,我們考慮到作為人,來識別界面上控件的時候,并沒有遇到任何障礙,其中最關鍵的原因,就是人已經屏蔽掉了所有不可見(包括隱藏和被覆蓋的控件)的控件。這樣,人在識別的過程中,就少了很多干擾,定位也越發的簡單直接。
判斷控件的可見性是非常簡單的。但是對于真正不可見的控件的實現,遇到了很多問題,也曾經考慮過繞過去,但是最終我們還是確定,這是一個非常好的原則,必須堅持下去,它將大大改善編寫測試代碼的簡單性和可讀性。
首先遇到的是一種方式,是將控件的位置,設置在遠離屏幕的位置,比如說在(-10000, -10000)到(0,0)之間,那么其區域并不在桌面上,最后也必然不可見。
最復雜的是控件的層疊。在Delphi中,針對Controls,存在一個ZOrder的概念。不同的語言有著不同的處理。Delphi中是不可以直接設置ZOrder的,但是提供了BringToFront和SendToBack兩個方法來簡單改變ZOrder。我們平時看到的控件層疊,都是通過這個方式來實現的。針對這種層疊方式,我們通過判斷其是否被ZOrder更高的控件覆蓋來判斷。
通過對幾種常見的可見性方式的判斷,我們發現主窗體中的控件定位變得非常簡單。這為我們下一步的測試代碼編寫提供了非常好的基礎。
在這過程中,感受最深的就是,好的原則一定要堅持下去。好的設計往往不在于最初的設想,而在于過程中的堅持!
文章來源于領測軟件測試網 http://www.kjueaiud.com/