2013-10-07 315 views
1

Grails中1.3.5應用一定要考拋出異常的方法,但此測試失敗:shouldFailWithCause失敗測試

 shouldFailWithCause(MyException) { 
      vb.doStuff person 
     } 

的消息是:
junit.framework.AssertionFailedError:封閉應該有由異常類型引發的異常失敗,取而代之的是發現這些異常: MyException:這裏是異常消息。

它引發正確的異常但未通過測試。出了什麼問題?

編輯:

public void doStuff(person) { 
     if (!canPersonDoStuff(person)) { 
      throw new MyException("Here comes the message of exception") 
     } 
} 
+0

你可以顯示被測代碼嗎? – dmahapatro

+0

這是在問題。有趣的部分是一條消息,告訴它它只是例外,但帶有消息。 –

+0

我的意思是'doStuff()'看起來像真實的樣子。 – dmahapatro

回答

3

shouldFailWithCause查找異常,而不是例外本身的cause。如果您添加丟棄MyException作爲異常的原因,您可以使您的斷言生效。

public void doStuff(person) { 
    if (!canPersonDoStuff(person)) { 
     throw new Exception(new MyException("The message of my exception")) 
     //or throw new Exception(cause: new MyException("message")) 
    } 
} 

我寧願用你擁有的任何邏輯現在在doStuff()shouldFail{..}代替shouldFailWithCause{..}斷言,因爲所引發的確切異常前的檢查。

shouldFail(MyException) { 
    vb.doStuff person 
}