上篇我們給框架設計了一個配置文件,而且利用java反射機制優化了控制類,框架又進步了一些。這次我們可以再改幾個小地方。首先看LoginPage.java和EmpPage.java這兩個文件,它們都有getPageObjects()方法,里面有每個page object的獲取過程:
我們可以把這一步單獨拿出來,讓它根據object名稱來自動判斷需要用哪一個定位器,這樣就不用總想著到底需要是id還是name還是xpath了。先根據object的定位器修改一下object名稱,加上后綴"_定位器":
loginPage.properties:
empPage.properties:
接著就該寫判斷步驟了,在com.testalliance.hrsystem.pageobj中新建Objects.java,復制如下代碼:
這段代碼不難理解,接受兩個參數,一個是object名稱,另一個是object值,每個傳進來的object信息都會進行自動判斷。
接著修改LoginPage.java和EmpPage.java:
LoginPage.java:
其實就是把定位過程放進每一個小的操作方法中,我還把getObjects()加了個參數,這樣文件路徑就可以傳進來了。同理,EmpPage.java可以改成:
這樣,page object的獲取過程就被單獨提取出來了,我們不需要總想著到底應該用哪種定位器了。
第二個我想修改的是測試結果返回值。目前所有的測試類都是里面都用Result = "TEST PASS"作為測試結果,比如TCLogin1.java:
不說專業不專業,每次寫文字"TEST PASS"也容易出錯不是?我們可以在測試類里把它們用整型0或1代替,統一返回用字符串表示。當然,你也還可以繼續用布爾類型true和false,不過整型也是很多人常用的,我演示一下,以TCLogin1.java為例:
表示測試結果的result變量初始值為0,如果最后執行完畢是Pass則改成1。按照這個改變把另外幾個測試類也改一下,把結果返回給TestRunner.java處理:
執行一下,測試通過。這篇的修改就到這兒。注意,現在TestRunner.java里面還有bug,舉個例子,程序進入try語句后如果在執行測試方法時拋出了異常,dm.cleanUp()還能執行到嗎?就執行不到了?;蛟S執行結果都無法被打印出來,所以我們還要繼續修改。