GroovyのPowerAssertの力を享受するなら、引数は1つの方を使わないとダメらしい
論よりコード。
動作確認バージョン
$ groovy -v
Groovy Version: 1.9.0-beta-1 JVM: 1.7.0-internal
test.groovy
def str = 'abc' assert 'わざと間違う' == str
結果
$ groovy test.groovy
Caught: Assertion failed:assert 'わざと間違う' == str
| |
| abc
falseAssertion failed:
assert 'わざと間違う' == str
| |
| abc
falseat test.run(test.groovy:2)
安定のパワーアサート。分かりやすい。
test2.groovy
def str = 'abc' assert 'ABC' == str, "str($str)の内容はABCのはず"
結果
$ groovy test2.groovy
Caught: java.lang.AssertionError: str(abc)の内容はABCのはず. Expression: (ABC == str). Values: str = abc
java.lang.AssertionError: str(abc)の内容はABCのはず. Expression: (ABC == str). Values: str = abc
at test2.run(test2.groovy:2)
ということで、パワーアサートを享受できなくなります。
まとめ
パワーアサートは強力だけど、エラー時のメッセージをきめ細やかに制御したい場合もあると思われる。使い分けが大事。