java - JUnit4 : testing for expected exception

标签 java junit junit4

我正在尝试使用 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/

相关文章:

java - Spring Data Rest 自定义 Controller ,内容类型为 :"text/plain"

java - 返回或参数中的某种性能问题 (Java)

java - 如何在 Junit 控制台中接受来自用户的输入

java - 如何为 mule 自定义变压器编写单元测试用例

java - 如何在 Java Web 应用程序中显示表格数据

java - 循环,初学者

java - 如何为createNewToken方法编写测试方法?

java - 无法为测试上下文的 @Transactional 测试检索 PlatformTransactionManager

java - 对象类型方法的 assertequal

java - Maven 找不到 org.junit,即使它在依赖项中