以上兩支測試程式分別用來測試以下案例
- Can_Register_User:使用者可以註冊帳號
- Cannot_Register_User_With_Empty_Username:註冊帳號時若沒有輸入帳號並送出,畫面將會出現正確的錯誤訊息
測試程式內容本身其實並不難理解,但存在code smell
- 過多的實作細節。對於非測試程式撰寫者來說,過多的資訊會造成閱讀困難,如果想快速地了解某個測試案例做了哪些事,程式碼閱讀者需要逐行研究
- 重覆的程式碼。以註冊帳號來說,不難想像還會有其它的測試案例存在,也因此會有重覆的程式碼會散亂在各個測試案例程式碼中
測試程式是不是變得乾淨許多?Page Object Pattern是撰寫UI測試程式時會用到的一個設計模式,它其實是利用物件導向封裝的特性,將實作細節隱藏起來,增加程式的可讀性和複用性。以上面的例子來看,測試程式的閱讀者只需要了解RegisterPage類別及HomePage類別的抽象涵義即可了解該測試案例的用意,而無需了解到實作細節。下面為RegisterPage類別的實作細節,為了符合Page Object Pattern的特性,重整過後的程式碼也顯得整齊許多,且RegisterPage類別也符合Single Responsibility Principle。
完整程式碼可由https://github.com/petekcchen/blog/tree/master/SeleniumDemo下載
參考
No comments:
Post a Comment