我正在尝试使用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是一个检查的异常。