うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

Groovyのassertがすごく見やすい件について

assert文を使っている人は結構すくないのではないでしょうか?
僕もあまり使っていませんが、やはりインラインで検証できるというのはいいかなと思います。
Groovyを使うようになってからassert文をちょくちょく使うようになったのですが、
Groovyのassert文を実行した際の標準出力が非常に見やすく表示されていて驚きでした。(正確にはassert文がfalseになったときの表示)

assertの例

expectに予想されるxml形式のStringオブジェクト、#convertでListを受け取ってxml形式のStringオブジェクトが返されるような場合。

assert expect.equals(convert(list))


これが評価されたときにassertがfalse、つまりexpectと#convertの結果が異なる場合の標準出力は次のような感じ。

表示のされ方

Caught: Assertion failed: 

assert expect.equals(convert(list))
       |      |      |       |
       |      false  |       [KeyValue@13e4a47e, KeyValue@7eb5666, KeyValue@6b754699]
       |             
       |               value1
       |               value2
       |               [KeyValue@76027982, KeyValue@1c778255]
       |             
       
         value1
         value2
         
           value3-1
           value3-2
         
       

	at Main.run(Main.groovy:44)

実際にIntelliJIDEAだと

こんな感じ


なんかカッコいい。というよりは単なるassert文を親切に表示してくれているのがいいですね。
assert文の使い方についてはいろいろ議論があると思うのですが、実際にどう切り分けるかはまた別のおはなし。