在grails 1.3.5应用程序中,我必须测试抛出异常的方法,但此测试失败:
shouldFailWithCause(MyException) {
vb.doStuff person
}
信息是:
junit.framework.AssertionFailedError:由于MyException类型导致异常,Closure应该失败,而是找到以下异常:
MyException:这是异常消息。
它抛出了正确的异常,但未通过测试。出了什么问题?
编辑:
public void doStuff(person) {
if (!canPersonDoStuff(person)) {
throw new MyException("Here comes the message of exception")
}
}
答案 0 :(得分:3)
shouldFailWithCause
查找异常的cause
,而不是异常本身。如果添加throw MyException
作为Exception的原因,则可以使断言正常工作。
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
}