パワーアサート(Power Assert)の真の意味
つい先ほど、Spockの記事をみてましたところPower Assertのことが書いてありました。ご存知のように、Groovy 1.7の「Power Assert機能」は、Spockの機能から由来しています。私としては結構お気に入りの機能です。Power Assertを気軽に体験するにはこちらとかもどうぞ。
私は、Power Asserについて、分かりやすくて便利だな、とは思ってましたが、Spockの記事に書いてあったことで「はた!」とわかったのは、Power Assertがさまざまなassertのバリエーションを不要にするってことです。
さまざまなassertのバリエーションとは、
- assertEquals
- assertSame
- assertNotEquals
- assertNotNull
とか、極めつけはhamcrestの
- assertThat(theBiscuit, is(equalTo(myBiscuit)))
- assertThat(11, greaterThan(10));
こういうやつ。
Assertにこういうバリエーションが必要な理由の一つは、Assert失敗時に、なぜ失敗したかという原因を極力分かりやすくしたいからです*1。エラーメッセージを親切にするためにです。でも、GroovyのPower Assertがあればassert(boolean)1個で十分なのですね。
これはコペルニクス的転回だなと思いました。
Power Assertは標準Groovyにとりこまれましたが、Spockには他にも便利機能があるみたい。Spockあなどれじ。
*1:hamcrestの場合、英語っぽいいとうれしいという需要もあるのかもしれません。でも「11>10」じゃなく「11, greaterThan(10)」と本当に書きたいのかどうかは私には分かりません。