Groovy2.0で追加された@NotYetImplemented
元ネタ http://blog.andresteingress.com/2012/03/04/using-notyetimplemented-in-test-cases/
@NotYetImplementedとそのテストメソッドは失敗しなくてはいけなくて、逆に成功してしまうと検証エラーとして扱われるみたい。
class EchoService { def echo(arg) { // Not Yet Implemented } }
というプロダクトコードがあって、以下の様なテスコトード。Spockでやってみた。
import groovy.transform.NotYetImplemented import spock.lang.Specification class NotYetImplementedSpec extends Specification { @NotYetImplemented def "失敗しないとダメ"() { given: def service = new EchoService() when: def result = service.echo('hello') then: result == 'hello' } }
これを実行するとグリーンになる。この状態で実装してみる。
class EchoService { def echo(arg) { arg } }
テスト実行する。成功してしまうと
junit.framework.AssertionFailedError: Method is marked with @NotYetImplemented but passes unexpectedly at org.yamkazu.NotYetImplementedSpec.失敗しないとダメ(NotYetImplementedSpec.groovy:8)
という感じ。
あと現時点(2012/7/6)でGroovy2.0でSpockを使う場合はSNAPSHOTバージョンを使う必要があります。
http://code.google.com/p/spock/wiki/SpockVersionsAndDependencies