Как использовать 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 )