No Programming, No Life

プログラミング関連の話題や雑記

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
false

Assertion failed:

assert 'わざと間違う' == str
| |
| abc
false

at 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)

ということで、パワーアサートを享受できなくなります。

まとめ

パワーアサートは強力だけど、エラー時のメッセージをきめ細やかに制御したい場合もあると思われる。使い分けが大事。