您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > TestNG
使用TestNG-Abbot實(shí)現(xiàn)GUI測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/5 13:52:28 ] 推薦標(biāo)簽:

當(dāng)然,如果我非常希望驗(yàn)證我的 Word Finder GUI,我必須確保在用戶執(zhí)行意外操作時(shí) —— 程序能夠正常工作,比如在輸入單詞之前按下 Find Word 按鈕,或者情況更糟,比如他們輸入了一個(gè)無效的單詞。舉例來說,如果用戶沒有向文本字段輸入內(nèi)容,GUI 應(yīng)該顯示特定的信息,如清單 4 所示:

圖 4. 糟糕的極端例子

當(dāng)然,使用 TestNG-Abbot 測試這種情況非常簡單,不是嗎?我所做的僅僅是將空值傳送到 TextComponentFixture 中,按下按鈕(通過對 ButtonFixture 使用 click 方法)并插入 “Please enter a valid word” 響應(yīng)!

清單 4. 測試一個(gè)極端例子:如果有人沒有輸入單詞按下了按鈕該怎么辦?

@Testpublic void assertNoWordPresentInvalidText() { TextComponentFixture text1 = new TextComponentFixture(this.fixture,   "wordValue"); text1.enterText(""); ButtonFixture bfix = new ButtonFixture(this.fixture, "findWord"); bfix.click(); LabelFixture fix = new LabelFixture(this.fixture, "definition"); fix.shouldHaveThisText("Please enter a valid word");} 


如清單 4 所示,一旦理解了獲得所需 GUI 組件的引用時(shí),事情并不是很困難。后一步是檢驗(yàn)其他 糟糕的極端例子 —— 輸入了無效的單詞。這個(gè)過程與 清單 1 和 清單 3 非常相似:僅僅是將所需的 String 傳遞到 TextComponentFixture 對象,單擊,然后插入特定的文本。如清單 5 所示:

清單 5. 輕松驗(yàn)證另一個(gè)極端例子!

@Testpublic void assertNoWordPresentInvalidText() { TextComponentFixture text1 = new TextComponentFixture(this.fixture,   "wordValue"); text1.enterText("Ha77"); ButtonFixture bfix = new ButtonFixture(this.fixture, "findWord"); bfix.click(); LabelFixture fix = new LabelFixture(this.fixture, "definition"); fix.shouldHaveThisText("Word doesn't exist in dictionary");} 


清單 5 很好地驗(yàn)證了圖 5 演示的功能,難道您不這樣認(rèn)為嗎?


圖 5. 輸入了無效單詞

真不錯(cuò)!我們已經(jīng)使用 TestNG-Abbot 輕而易舉地驗(yàn)證了三種不同的用戶場景。對于每種情況,我需要的只是被測試的組件的邏輯名稱以及一系列步驟,以便創(chuàng)建場景。

繼續(xù)測試 GUI

TestNG-Abbot 可能是測試工具中的新生兒,但它從其前輩那里繼承了一些非常有用的特性。本文向您展示了如何使用 TestNG-Abbot 通過編程的方法將 GUI 組件隔離,然后使用 fixture 公開組件的驗(yàn)證方法。在這個(gè)過程中,您了解了對正常情況下的場景(所有事務(wù)都合乎邏輯)以及無法預(yù)見場景下(包括意外操作)進(jìn)行測試是多么簡單。總之,你只需要知道場景和組件在其中起到了作用。使用 TestNG-Abbot 方便的 fixture 對象可以很輕易地改變組件的行為。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd