Как использовать Hamcrest для проверки на исключение?

У меня есть следующий код:

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

Какой помощник Hamcrest можно использовать для проверки утверждения? Я знаю, что могу использовать try/catch блок, но я предпочитаю держать цикломатическую сложность тестов до одного.

1 ответ

Решение

РЕДАКТИРОВАТЬ

Если вы действительно должны использовать Hamcrest, вы можете написать что-то вроде:

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

Вам понадобится ThrownMatcher.thrown(..) matcher, который я написал просто для удовольствия.

Смотрите Гист здесь.

Но в 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 )
Другие вопросы по тегам