2016-01-08 69 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那麼它必須也拋出該異常或它必須捕獲它。

這有點像變量的靜態類型。儘管看起來不方便,但它可以通過不允許含糊不清來幫助確保正確的代碼。讓編譯器報告任何不一致有助於更早發現問題。