thrown() を使って、Spock で例外発生をテストする

 
Spock の例外発生テストは楽です。

when:
stack.pop()

then:
thrown(EmptyStackException)

Spock 使い始めて数ヶ月たちますが、上記の例外補足の方法しか認識してませんでした。

when:
stack.pop()

then:
EmptyStackException e = thrown()
e.cause ==null

このように書けば、例外補足できるだけでなく、例外の中身(例えば、cause や message)も取得、検証できます。
Spock のサイトにもきちんと記載されているのですが、気づいていませんでした。

http://code.google.com/p/spock/wiki/SpockBasics

JUnit の @Rule ExpectedException あたりでも使わないと、スマートに書けないだろうな…なんて思っていました。
(try-catch する方法はもちろん確実ですが、かっこわるい)

明日から例外発生のテストが楽しくなりそうです。