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

了解 GUI

圖 1 顯示了已啟動(dòng)的 Word Finder GUI。記住該 GUI 之所以簡(jiǎn)單只有一個(gè)原因:它演示了 TestNG-Abbot 的三個(gè) fixture 類以及一些要引導(dǎo)的測(cè)試用例!

圖 1. Word Finder GUI

當(dāng)使用 TestNG-Abbot 進(jìn)行測(cè)試時(shí),應(yīng)該首先檢查 GUI 的組件。Word Finder GUI 由圖 2 所示的三個(gè)組件組成:

圖 2. Word Finder GUI 的組件

如您所見(jiàn),Word Finder GUI 由一個(gè) JTextField(用來(lái)輸入要查詢的單詞)、一個(gè) JButton(使 GUI 從字典數(shù)據(jù)庫(kù)中獲取釋義)和一個(gè) JEditorPane (顯示釋義)組成。

在良好的場(chǎng)景中,如果我輸入 pugnacious 然后單擊 Find Word 按鈕,JEditorPane 將顯示 “Combative in nature; belligerent”,如圖 3 所示:


圖 3. 良好的場(chǎng)景 —— 工作良好!

使用 TestNG-Abbot 進(jìn)行測(cè)試

要開(kāi)始使用 TestNG-Abbot,需要?jiǎng)?chuàng)建一個(gè)常規(guī)的測(cè)試 fixture,它將使用 TestNG 的 BeforeMethod 和 AfterMethod 注釋為您的 GUI 創(chuàng)建一個(gè)實(shí)例。TestNG-Abbot 框架附帶了一個(gè)方便的 AbbotFixture 對(duì)象,它簡(jiǎn)化了 GUI 組件的使用,實(shí)際上也引導(dǎo)了整個(gè)測(cè)試過(guò)程。要在測(cè)試 fixture 中使用該對(duì)象,需要在測(cè)試前將一個(gè) GUI 實(shí)例傳遞給 fixture 對(duì)象的 showWindow() 方法,然后使用名為 cleanUp() 的方法對(duì) fixture 進(jìn)行清理。

在清單 1 中,我創(chuàng)建了一個(gè) TestNG 測(cè)試(實(shí)際上并沒(méi)有對(duì)其做任何測(cè)試),該測(cè)試在 fixture 中使用 TestNG-Abbot 的 AbbotFixture 對(duì)象來(lái)存放 Word Finder GUI 的實(shí)例。

清單 1. 使用 AbbotFixture 對(duì)象定義 WordFindGUITest

public class WordFindGUITest { private AbbotFixture fixture; @BeforeMethod private void initializeGUI() {  fixture = new AbbotFixture();  fixture.showWindow(new WordFind(), new Dimension(269, 184)); } @AfterMethod public void tearDownGUI() {  fixture.cleanUp(); }} 


由于 Word Finder GUI 的用戶可見(jiàn)的行為會(huì)影響 圖 2 所示的三個(gè)組件,需要通過(guò)編程對(duì)其進(jìn)行調(diào)整,以確保工作能正常進(jìn)行。比如,驗(yàn)證 圖 3 演示的良好的場(chǎng)景,需要執(zhí)行下面三個(gè)步驟:

    獲得對(duì) JTextField 的引用并向其添加一些文本。
    獲得 JButton 的句柄并單擊它。
    獲得對(duì) JLabel 組件的引用并檢驗(yàn)是否顯示了正確的釋義。

檢驗(yàn)良好的場(chǎng)景

使用 TestNG-Abbot,可以通過(guò)這三個(gè)方便的 fixture 類型執(zhí)行上面所屬的三個(gè)步驟:TextComponentFixture 用于 JTextField;ButtonFixture 用于 Find Word 按鈕;LabelFixture 用來(lái)驗(yàn)證 JLabel 中特定的文本。

清單 2 顯示了用于驗(yàn)證 圖 3 中演示的內(nèi)容是否可以正常工作的代碼:


清單 2. 測(cè)試一個(gè)良好場(chǎng)景

@Testpublic void assertDefinitionPresent() { TextComponentFixture text1 = new TextComponentFixture(this.fixture,   "wordValue"); text1.enterText("pugnacious"); ButtonFixture bfix = new ButtonFixture(this.fixture, "findWord"); bfix.click(); LabelFixture fix = new LabelFixture(this.fixture, "definition"); fix.shouldHaveThisText("Combative in nature; belligerent.");} 


注意 fixture 對(duì)象通過(guò)一個(gè)邏輯名稱和特定的 GUI 組件連接在一起。例如,在 Word Finder GUI 中,通過(guò)編程將 JButton 對(duì)象與 “findWord” 名稱聯(lián)系起來(lái)。請(qǐng)注意在定義按鈕時(shí),我是如何通過(guò)調(diào)用組件的 setName() 方法做到這點(diǎn)的,如清單 3 所示:


清單 3. 定義 Find Word 按鈕

findWordButton = new JButton();findWordButton.setBounds(new Rectangle(71, 113, 105, 29));findWordButton.setText("Find Word");findWordButton.setName("findWord"); 


同樣要注意,在 清單 2 中,我是如何通過(guò)將 “findWord” 名稱傳遞給 TestNG-Abbot 的 ButtonFixture 對(duì)象而獲得對(duì)按鈕的引用。“單擊” 按鈕(調(diào)用 click 方法)然后使用 TestNG-Abbot 的 LabelFixture 對(duì)象插入單詞的釋義,多么酷!不過(guò)不要此滿足。

測(cè)試意外場(chǎng)景

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