如何使用Hamcrest测试异常?

时间:2013-10-08 19:06:43

标签: groovy hamcrest

我有以下代码:

def f(String s) {
  assert !s?.contains('.')
}

什么Hamcrest匹配器可用于测试断言?我知道我可以使用try / catch块,但我更喜欢将测试的圈复杂度保持为一。

1 个答案:

答案 0 :(得分:4)

修改

如果你真的必须使用Hamcrest,你可以这样写:

assertThat( { f( 'hi.ho' ) }, thrown( MyException ) )

你需要我为了好玩而写的ThrownMatcher.thrown(..)匹配器。

请参阅Gist here

但是在Groovy中,Hamcrest匹配器可以很容易地用更强大的构造替换。

例如,您可以使用GroovyTestCase执行此操作:

shouldFail( MyException, { /* code expected to throw MyException*/ } )

最后,如果你认真测试使用Spock:

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

实施例

when:
f 'something.something'

then:
thrown( TypeOfException )