亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 >
單元測試技巧:如何手動設置待測試Bean的屬性
作者:網絡轉載 發布時間:[ 2013/2/27 15:19:50 ] 推薦標簽:

在JUnit測試中,通常作為POJO的Java Bean都是一組簡單的getter/setter方法,需要測試的不是這些Bean本身,而是對Bean的屬性設置后,測試業務方法是否正常工作,例如,一個注冊用戶的類方法void register(Account account),需要對傳入的Account Bean做初始化設置,然后,根據業務規則決定register方法是否應該執行成功或者拋出IllegalArgumentException。
 
倘若按照常規的Unit測試,需要考慮用戶輸入的許多種組合,在testXxx()方法中編寫模擬用戶輸入的代碼是冗長而繁瑣的,不如直接通過Swing窗口手動設置Bean的屬性,然后再執行業務方法,這樣,雖然引入了輸入界面,需要人工干預測試過程,卻大大簡化了編寫測試用例的麻煩。
 
在TCK測試中,對許多UI組件的測試正是采用這種半自動的方法,因為只有測試人員本身才能看到UI測試的結果正確與否,計算機很難判斷一個類似fillRect()的方法到底有沒有在屏幕上正確繪制出來。
 
基于這種思想,為了測試許多種不同輸入的組合,我們決定編寫一個能根據Bean的屬性自動生成輸入窗口的小工具,以便在Unit測試過程中,能夠由測試人員手動設定Bean的屬性和期望的結果,然后,繼續測試。
 
為了實現這個目的,我們設計了一個小工具,它能夠實現:
 
1.根據傳入的Bean自動為每個public setXxx()方法生成輸入框;
 
2.由測試人員手動設置Bean的屬性,然后,選擇“Success”,“Failure”以決定這次測試的數據應該產生正確或錯誤的結果。
 
3.可以連續多次循環測試,直到測試人員點擊“End”,結束本次測試。
 
整個工具被封裝在一個BeanInputDialog類中,它繼承自JFrame,只暴露了一個public static方法。下面,我們以一個Account Bean為例,測試用戶輸入的屬性是否合法。
 
Account定義了4個字段和一個validate()方法來驗證輸入,如果不符合輸入,validate()方法會拋出IllegalArgumentException。我們編寫一個簡單的TestCase:
 
package com.crackj2ee.test.util;
import junit.framework.TestCase;
public class AccountTest extends TestCase {
    public void testAccount() {
        int expect;
        for(;;) {
            Account account = new Account(); // 待測試的Bean
            expect = BeanInputDialog.inputBean(account); // 用戶在此輸入
            // 注意:直到用戶輸入完成,inputBean()方法才會返回,它是一個同步方法
            // inputBean()方法返回一個int,表示本次測試的期望值
            if(expect==BeanInputDialog.EXPECT_END) // 期望測試結束,退出循環
                break;
            if(expect==BeanInputDialog.EXPECT_SUCCESS) { // 期望測試成功
                account.validate();
            }
            if(expect==BeanInputDialog.EXPECT_FAILURE) { // 期望測試失敗
                try {
                    account.validate();
                    fail("Not catch IllegalArgumentException!"); // 沒有捕獲到預期的異常
                }
                catch(IllegalArgumentException e) {
                    // OK!捕獲到預期的異常
                }
            }
        }
    }
}
 
在Unit測試過程中,可以不斷設置Bean的屬性,以滿足多種組合的測試用例。下面分別輸入合法和非法的用戶名,然后點擊期望值測試:
 
需要注意的是,由于屬性的獲取是通過反射得到的,考慮到通常的設計原則,我們只讀取public的setXxx()方法。
如果在測試人員輸入前,Bean已經有了一些初始值,這個工具也能通過反射得到相應的getXxx()方法的值。要注意的是,對boolean和Boolean類型的屬性,是根據getXxx()取得而不是根據isXxx()取得的。
目前,可以處理的屬性類型包括java.lang.String,java.util.Date,short,int,long,float,double,boolean及其包裝類型Short,Integer,Long,Float,Double和Boolean。還可以對其擴展,以便支持更多的類型。

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产成人自啪精品视频 | 国产成人在线免费视频 | 色秀视频在线 | 色哒哒影院 | 天堂网在线看 | 国产日韩欧美在线观看 | 中国一级特黄高清免费的大片 | 国精品在亚洲_欧美 | 国产成人综合在线 | 免费簧网站永久在线播放国产 | 欧美激情a∨在线视频播放 欧美激情二区 | 在线观看亚洲欧美 | 亚洲三级天堂 | 亚洲a在线播放 | 欧美在线看欧美视频免费网站 | 最新中文字幕在线播放 | 日韩欧美国产卡通动漫 | 欧美成人免费xxx大片 | 麻豆国产精品有码在线观看 | 亚欧乱亚欧乱色视频免费 | 日本一区二区三区久久 | 香蕉视频污污 | 日韩精品成人在线 | 狠狠色丁香久久婷婷综合五月 | 九九热在线播放 | 97av视频 | 521a成v视频网站在线入口 | 97久久人人爽人人爽人人 | 伊人久久大香线蕉综合热线 | 成年人三级视频 | 日韩免费中文字幕 | 3751性欧美视频在线播放 | 男女啪啪网站 | 成年网站在线播放 | 一级一级一片在线观看 | 亚洲天堂日韩在线 | 羞羞视频免费观 | 三级纯黄 | 青青草国产精品免费 | vk挠痒痒 | 天天宗合网 |