• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    追求代碼質量: 對 Ajax 應用程序進行單元測試

    發布: 2008-6-24 14:38 | 作者: 不詳 | 來源: 測試時代編輯整理 | 查看: 49次 | 進入軟件測試論壇討論

    領測軟件測試網

    我已經指出,我的測試集中于 getDefinition() 方法(如 清單 4 所示)。您可以從代碼看到,測試邏輯非常簡單:傳入一個單詞(比如 pugnacious),然后驗證相應的 Label 文本是否得到正確定義。很簡單,對嗎?但是不要忘記,getDefinition() 方法在 AsyncCallback 對象中具有某種相關的異步性。

    GWTTestCase 類是一個抽象 類,因為它的 getModuleName() 方法就是這么聲明的;因此,當您擴展該類時,您需要實現 getModuleName()(除非您是在為框架創建自己的基抽象類)。模塊名實際上就是您的 GWT XML 文件所在的包結構的名稱去掉文件擴展名。舉個例子,在本例中,我有一個名為 WordModule.gwt.xml 的 XML 文件,它位于一個目錄結構如:com/acme/gwt。相應的,模塊的邏輯名稱為 com.acme.gwt.WordModule,這會讓您想到 Java 平臺的普通包模式。

    我已經得到一個模塊名,可以開始定義測試用例了,如清單 5 所示:


    清單 5. 您必須實現 getModuleName 方法并提供一個有效的名字
                   
    import com.google.gwt.junit.client.GWTTestCase;
    import com.google.gwt.user.client.Timer;

    public class WordModuleTest extends GWTTestCase {

     public String getModuleName() {
       return "com.acme.gwt.WordModule";
     }
    }
     


    到目前為止一切良好,但是我還沒有執行任何測試!由于我的 Ajax 應用程序使用 AsyncCallback 對象,在通過測試用例調用 getDefinition() 方法時, 我必須強迫 JUnit 延遲運行;否則測試將由于沒有任何響應而失敗。這就要用到 GWT 的 Timer 類。Timer 使我能夠重寫 getDefinition() 的 run 方法,在 Timer 內完成測試用例邏輯。(測試用例以獨立線程運行,有效地阻塞 JUnit 完成整個測試用例)。

    以我的測試為例,我將首先調用 getDefinition() 方法,然后提供一個 Timer 的 run() 方法的實現。run() 方法得到輸出 Label 實例的文本并驗證是否是正確定義。定義了 Timer 實例后,我就需要確定其何時運行,同時強制 JUnit 掛起直至 Timer 實例完成。也許聽起來有點復雜,不必擔心,因為實踐起來非常簡易。實際上,清單 6 展示了整個過程:


    清單 6. 使用 GWT 輕松測試
                   
    public void testDefinitionValue() throws Exception {
     WordModule module = new WordModule();
     module.getDefinition("pugnacious");
     Timer timer = new Timer() {
       public void run() {
        String value = module.getOutputLabel().getText();
     String control = "inclined to quarrel or fight readily;...";  
     assertEquals("should be " + control, control, value);
        finishTest();
       }
      };
      timer.schedule(200);
      delayTestFinish(500);
    }
     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>