shouldFailWithCause测试失败

时间:2013-10-07 10:36:23

标签: grails groovy junit

在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")
        }
}

1 个答案:

答案 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
}