4

次のコードがあります。

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

アサーションのテストに使用できる Hamcrest マッチャーはどれですか? try/ブロックを使用できることはわかっていますcatchが、テストの循環的複雑度を 1 に保つことを好みます。

4

1 に答える 1

4

編集

本当に Hamcrest を使用する必要がある場合は、次のように記述できます。

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

ThrownMatcher.thrown(..)楽しみのために私が書いたマッチャーが必要になります。

ここの要点を参照してください。

しかし、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 )
于 2013-10-08T21:03:59.053 に答える