1

在 grails 1.3.5 应用程序中,我必须测试引发异常的方法,但此测试失败:

        shouldFailWithCause(MyException) {
            vb.doStuff person
        }

消息是:
junit.framework.AssertionFailedError: Closure 应该失败并出现由 MyException 类型引起的异常,而是发现了这些异常: MyException: 出现异常消息。

它抛出正确的异常,但测试失败。出了什么问题?

编辑:

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

1 回答 1

3

shouldFailWithCause查找cause异常的而不是异常本身。如果将 throw 添加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()但断言 withshouldFail{..}而不是shouldFailWithCause{..}因为前者检查抛出的确切异常。

shouldFail(MyException) {
    vb.doStuff person
}
于 2013-10-07T18:32:16.100 回答