我正在尝试使用 JUnit4 测试一个抛出异常的方法。这是代码片段:
package unit_tests;
import org.junit.Test;
import calculator.*;
@Test(expected=CalcError.class)
public void testDivision() {
Calculator myCalc = new Calculator(10, 0);
myCalc.setOperation(Calculator.Operation_e.DIVIDE);
myCalc.getResult();
}
问题出在 @Test(expected=CalcError.class)
行:我收到以下错误:
Class<CalcError> cannot be resolved to a type
CalcError
是这样定义的:
package calculator;
public class Calculator {
public class CalcError extends Exception {
// ...
}
public double getResult() throws CalcError {
// ...
}
}
我不明白为什么 CalcError
不是一个类型,即使单元测试在 unit_tests
包中并且计算器在 calculator
包。
我错过了什么?
最佳答案
CalcError是一个内部类,所以需要使用
@Test(expected=Calculator.CalcError.class)
参见 Nested Classes .
编辑:您还需要将测试方法声明为抛出 Calculator.CalcError:
@Test(expected=Calculator.CalcError.class)
public void testDivision() throws Calculator.CalcError {
Calculator myCalc = new Calculator(10, 0);
myCalc.setOperation(Calculator.Operation_e.DIVIDE);
myCalc.getResult();
}
这是为了取悦编译器,因为 Calculator.CalcError 是一个已检查的异常。
关于java - JUnit4 : testing for expected exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8353173/