使用 Swing、AWT 和類似的技術構建用戶界面通常會給開發人員進行測試帶來挑戰,原因如下:
底層圖形框架的復雜性
GUI 中表現形式和業務邏輯之間的耦合
缺乏直觀的自動測試框架
當然,前兩個原因并不新鮮 —— 圖形框架本來就很復雜,而且向 GUI 應用程序添加業務功能總是會給測試造成麻煩。另一方面,過去幾年中有許多方便的框架涌現出來,確實使 GUI 測試更加便利。
本月,我將介紹一種新的框架,它極大地減輕了 GUI 測試的痛苦。
TestNG-Abbot 簡介
TestNG-Abbot 源自于兩個成功的開發人員測試框架的結合:Abbot 和 TestNG。Abbot 是一種 JUnit 擴展框架,主要目的是使 GUI 組件實現編程隔離,它還提供了一種驗證 GUI 行為的簡易方法。舉例來說,可以使用它來獲取對按鈕組件的引用,使用編程的方法點擊按鈕,然后檢驗其操作。Abbot 還附帶了一個腳本記錄器,使用它就能夠以 XML 格式布設測試場景,可以通過編程的方式運行它。
在本系列中,我已經介紹了一些關于 TestNG 的內容,這里將繼續介紹 TestNG?;旧?,TestNG 是 JUnit 的一個替代物。除了所有預期的功能外,它還增加了一些額外功能。正如我在其他文章中提到的一樣,TestNG 特別適合于更高層次的測試,其中,它可以用來測試依賴關系并只返回失敗了的測試 —— 簡而言之,在測試 GUI 時,這類型測試非常方便。(參見 Resources 中有關 TestNG 的更多內容。)
它的起源就如此讓人印象深刻,所以 TestNG-Abbot 成為測試工具中的神童就沒什么好奇怪的了。同 Abbot 一樣,TestNG-Abbot 使 GUI 組件能夠進行編程隔離。同時,它使用了 TestNG 的斷言,將 GUI 操作細節提取到了簡單的 fixture 中,后者能夠公開驗證方法。如能正確使用,TestNG-Abbot 的直觀的 fixture 類能夠使 GUI 測試如同從小男孩手里偷一塊糖一樣簡單。(當然,您不會想那么干的?。?/P>
直觀的 fixture 類
TestNG-Abbot 的當前版本支持七種 fixture 類型,其中一種類型用于操作按鈕、菜單標簽以及文本項組件,如文本字段。此外,這些 fixture 類型根據名字在邏輯上鏈接到了測試中的代碼(即 GUI 組件)。這使得 GUI 和其測試實現了松耦合,這樣做至少有以下兩個好處: