我正在嘗試在 junit 測驗中測驗一個自定義例外,但它沒有得到它。
這是我創建的方法
public String Validate(Student obj) throws NullStudentObjectException, NullNameException, NullMarksArrayException {
if(obj == null) {
throw new NullStudentObjectException();
}
else{
if(obj.getName() == null)
throw new NullNameException();
else if(obj.getMarks() == null
throw new NullMarksArrayException();
return(findGrades(obj);
}
}
我在這里呼叫方法。
public void testCase() {
StudentReport objSR = new StudnetReport();
try {
objSR.Validate(data[6]);
} catch (Exception e) {
e.printStackTrace();
}
}
StudentReport 是 validate 方法的類,在 data[6] 中我傳遞的是 null。
這是測驗用例
@Test (expected = NullStudentObjectException.class)
public void testTestCase() {
objTest.testCase();
}
在運行此代碼時,它沒有得到自定義例外,但在 printStackTrace 中,它正在列印這里是一個空物件例外。
當我創建一個內置例外(如除以零 JUnit)時,還有一件事是得到該例外。
uj5u.com熱心網友回復:
問題是這段代碼:
try {
objSR.Validate(data[6]);
} catch (Exception e) {
e.printStackTrace();
}
吞下例外并且它沒有達到測驗期望的更高級別。您要么需要try... catch...在呼叫周圍洗掉它objSR.Validate(data[6]),要么需要在捕獲并記錄例外后重新拋出例外,如下所示:
public void testCase() {
StudentReport objSR = new StudentReport();
try {
objSR.Validate(data[6]);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
當我創建一個內置例外(如除以零 JUnit)時,還有一件事是得到該例外。
因為您的代碼正在捕獲Exception,但ArithmeticException繼承自RuntimeException,這就是它沒有被捕獲的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/489150.html
上一篇:如果例外被捕獲,如何使代碼運行,但同時有一些特定例外的行
下一篇:什么時候“嵌套堆疊展開”可以?
