new Target(property: value) with assertionによる簡易テスト

懺悔します。私、これまで、Groovyの1ファイルスクリプト書くときテストをさぼってました。
だってテストしにくいんですもん。

1ファイルで実行するだけのスクリプトを書いている時に、もう1個テスト用にファイルを作るのはとてもめんどくさいです。ファイルを行き来するだけで切り替えも発生してしまいます。非常に不便です。
1つのファイル中に複数のクラスを作る場合、ファイル名と同名のクラスは作れません。が、importで.groovyファイルからクラスをインポート出来るのはファイル名と同名のクラスを書いてある場合だけです。

で、まぁ書き捨てだしいいや、とテストをしない事が多かったんです。

でも、assertなら書けます。これならそんなに手間ではないし、テストが失敗した時だけ騒いで成功時にはおとなしくしています。もっとassertするべきやったんです。
あとはassertするためのテストオブジェクトに実行空間を汚染させなければ最高です。で、new Target(property: value) with assertion。私の造語、というかやる事そのまんまなんですけどね。
こんな風にします。

new Foo(
    bar:5,
    buzz:10
).with {
    assert hoge == 15 : "hogeはbar + buzzの値となる"
    assert fuga == 50 : "fugaはbar * buzzの値となる"
}
class Foo {
    int bar
    int buzz
    public int getHoge() { return bar + buzz; }
    public int getFuga() { return bar * buzz; }
}

newでプロパティも設定してしまって、で、withでassertを書きまくる。これならインスタンスが生きてる間にテストをやって、テストが終わったら即ごみ収集に持って行ってもらえます。
これは楽です。これならちょっとしたスクリプトでもテスト駆動で作る事が出来ます。

アメージング!
エクセレント!
ぜひお試しあれ。