2013-10-07 327 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 
}