uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

GContract

契約による設計(Design by Contract, DbC)をGroovyで実現する、GContract 1.1.0がリリースされています。

http://wiki.github.com/andresteingress/gcontracts/
http://en.wordpress.com/tag/gcontracts/

指定できるのは、@Invariant(不変条件), @Require(事前条件)と@Ensures(事後条件)の3つのアノテーションで、Eiffelと同じですね。これらに対する具体的な条件はクロージャとしてアノテーションの引数に指定します。これらはAST変換でJava Assertionに変換されて実行されるらしい。

思うに、DbCはテストの最小限な代替となります。コンパイル時に型チェックを行わない動的言語であるGroovyでは、特に有用である可能性があります。