我试图用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();
}
Run Code Online (Sandbox Code Playgroud)
问题在于@Test(expected=CalcError.class):我收到以下错误:
Class<CalcError> cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)
以下是如何CalcError定义:
package calculator;
public class Calculator {
public class CalcError extends Exception {
// ...
}
public double getResult() throws CalcError {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么CalcError不是一个类型,即使单元测试在一个unit_tests包中并且计算器在一个calculator包中.
我错过了什么?
CalcError是一个内部类,所以你需要使用
@Test(expected=Calculator.CalcError.class)
Run Code Online (Sandbox Code Playgroud)
请参阅嵌套类.
编辑:你需要将测试方法声明为抛出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();
}
Run Code Online (Sandbox Code Playgroud)
这是为了取悦编译器,因为Calculator.CalcError是一个经过检查的异常.
| 归档时间: |
|
| 查看次数: |
2358 次 |
| 最近记录: |