上篇我們給框架又做了幾個小修改,最后的TestRunner.java是這個樣子:
注意,現在TestRunner.java里面還有bug,舉個例子,程序進入try語句后如果在執行測試方法時拋出了異常,dm.cleanUp()還能執行到嗎?就執行不到了。或許執行結果都無法被打印出來,所以我們還要繼續修改。
介紹java的時候我們說到try...catch語句說我們還可以最后加一個finally,而且絕大多數情況下即使拋出了異常,finally塊里的代碼還是會被執行的。所以,我把打印測試結果和測試掃尾步驟放進去:
這樣不管怎么樣都會有測試結果。既然在這兒用了try...catch,我們就可以把其它測試類中的try...catch去掉,在方法名旁邊拋出,這樣所有的異常都會交給總控制類TestRunner.java來處理。以TCEmp1.java為例:
修改完成,你可以故意寫錯一些代碼然后執行一下,看是不是異常被成功捕獲。
下一步我想在拋異常的地方添加一個截圖操作,忘記怎樣操作截圖的朋友可以再看前面文章復習一遍。和讀取模塊一樣,截圖屬于功能性操作,我把它放在Utility.java里:
截出圖片的名稱會以“頁面名稱_時間.jpg”的格式出現。現在問題來了,應該在哪兒調用?是不是應該在catch里面呀?因為catch塊被執行就意味著拋出了異常,所以我們把它加在TestRunner.java的catch塊里:
故意改錯一段代碼讓它拋個異常,可以看到截圖生成在指定的文件夾,我就不截圖了。
最后一個改動隨你選擇。有些人出于java封裝概念的考慮,覺得是不是應該把從配置文件里讀出來的瀏覽器、driver和路徑都封裝起來呀?不然總怕被隨意訪問。沒問題,這三者屬于環境信息,我們可以在com.testalliance.hrsystem.managers中新建一個類叫EnvManager.java:
然后寫get/set過程,不多說,介紹封裝的時候都說過:
最后修改DriverManager.java:
再運行一下,測試通過。
到此為止我就不再改了,經過這幾篇文章對框架的修改,我們已經順著數據驅動的思路搭建了一個簡單的測試框架,其實還是個雛形。下一篇我們再總結一下我們這個雛形框架的組成。