2016-01-08 64 views
2

我不能运行我的测试,因为测试得到红色波浪错误线在我需要使用任何的try/catch或添加抛出这个说法decorator.decorate(new EncoderColumnDecorator())。 这是错误消息。 enter image description here未处理的异常的Junit

为什么我必须把任何的try/catch或抛出异常时,我已经有 “预期”

我的单元测试的属性:

@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; 
    } 

} 
+4

该方法抛出一个异常,需要使用它来抛出/尝试的任何方法...赶上它。这包括JUnit方法。 – pietv8x

回答

4

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

这有点像变量的静态类型。尽管看起来不方便,但它可以通过不允许含糊不清来帮助确保正确的代码。让编译器报告任何不一致有助于更早发现问题。