您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
JUnit中如何測(cè)試異常
作者:軟件測(cè)試 發(fā)布時(shí)間:[ 2012/11/29 14:58:47 ] 推薦標(biāo)簽:

  很多時(shí)候,我們要寫一些單元測(cè)試來(lái)測(cè)試我們程序是否能正確觸發(fā)異常。
  比如下面的例子中,我們寫了一個(gè)test case來(lái)測(cè)試一個(gè)Email驗(yàn)證類EmailAddrValidator,這個(gè)類有一個(gè)doValidate(email)方法可以驗(yàn)證email是否合法,如果不合法則會(huì)拋出ValidationException異常。因此我們寫了兩個(gè)方法來(lái)進(jìn)行單元測(cè)試,前一個(gè)方法testDoValidate用來(lái)測(cè)試正常值,后一個(gè)方法testDoValidateException用來(lái)測(cè)試對(duì)錯(cuò)誤的email格式是否能正確觸發(fā)異常。
  這個(gè)例子的關(guān)鍵是方法testDoValidateException(String email) 。

import junit.framework.TestCase;

public class TestEmailAddrValidator extends TestCase {
    EmailAddrValidator validator = new EmailAddrValidator();

    private void testDoValidateException(String email) {
        try {
            validator.doValidate(email, null);
            fail("末拋出異常");
        } catch (ValidationException e) {
            assertTrue(true);
        }
    }
}

-----------------------------------------
注:在這里L(fēng)ocale 參數(shù)并沒(méi)有用到。
import java.util.Locale;

import com.hygensoft.common.configure.ConfigureObject;

public class EmailAddrValidator{

    protected static final String ERROR_CODE_INVALID_EMAIL_ADDR = "INVALID_EMAIL_ADDR";
    protected static final String ERROR_CODE_INVALID_INPUT = "INVALID_INPUT_OBJECT";

    public Object doValidate(Object input, Locale locale) throws ValidationException {
        if (!(input instanceof String)) {
            throw new ValidationException(ERROR_CODE_INVALID_INPUT, input);
        }
        String inputStr = (String) input;
        int idx = inputStr.indexOf('@");
        if (idx == -1 || idx == 0) {
            throw new ValidationException(ERROR_CODE_INVALID_INPUT, input);
        }
        int idx2 = inputStr.indexOf('.', idx);
        if (idx2 == -1 || idx2 == idx + 1) {
            throw new ValidationException(ERROR_CODE_INVALID_INPUT, input);
        }
        if (inputStr.endsWith(".")) {
            throw new ValidationException(ERROR_CODE_INVALID_INPUT, input);
        }
        return input;
    }

    /* (non-Javadoc)
     * @see com.hygensoft.common.configure.Configurable#initialize(com.hygensoft.common.configure.ConfigureObject)
     */
    public void initialize(ConfigureObject conf) {}

}

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