未处理的异常Junit

时间:2016-01-08 18:22:30

标签: java unit-testing exception junit junit4

我无法运行我的测试,因为测试在此语句decorator.decorate(new EncoderColumnDecorator())中出现红色波浪形错误行,要求我使用try / catch或添加throws。     这是错误消息。     enter image description here

为什么当我已经拥有“预期”属性时,我必须放置try / catch或throws异常

我的单元测试:

@Test(expected=DecoratorException.class)
    public void testDecorate_exception() {
        decorator.decorate(new EncoderColumnDecorator()); -----Error in this line
    }

待测方法

@Override
    public String decorate(Object arg0) throws DecoratorException {
        try{
                //some code     
            }
        }catch(Exception e){
            throw new DecoratorException();
        }       
        return arg0;
    }

}

1 个答案:

答案 0 :(得分:4)

这只是代码必须遵循的规则才是有效的Java。如果一个函数调用throws的另一个函数,那么它必须也抛出该异常,否则它必须捕获它。

有点像静态输入变量。虽然看起来不方便,但它可以通过不允许模糊来帮助确保正确的代码。让编译器报告任何不一致有助于更早地检测问题。