1

grails 1.3.5 アプリケーションでは、例外をスローするメソッドをテストする必要がありますが、このテストは失敗します。

        shouldFailWithCause(MyException) {
            vb.doStuff person
        }

メッセージは次のとおりです:
junit.framework.AssertionFailedError: Closure should have failed with a exception due to type MyException, not found these Exceptions: MyException: Here comes the message of exception.

正しい例外をスローしますが、テストに失敗します。何がうまくいかないのですか?

編集:

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

1 に答える 1

3

shouldFailWithCausecause例外自体ではなく、例外の を探します。MyExceptionException の原因としてthrow を追加すると、アサーションを機能させることができます。

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
}
于 2013-10-07T18:32:16.100 に答える