Java プロジェクトに Spock を導入するための3ステップ

Java プロジェクトでユニットテストにお困りなら Spock を導入することをオススメします。
もし、Eclipse を使っているのであれば、たった3ステップで 既存の Java プロジェクトに導入できます。

「上の承認がないと導入できないし…」 とか 「ビルドスクリプト直さないとダメだし…」 とか いろいろと考えるよりもまずは導入してみましょう。その効果をみてから考えても遅くはないです。
では、早速 Java プロジェクトに Spock を導入してみましょう。

ステップ1. Groovy-Eclipse プラグインをインストールしよう

まず、最初に Groovy-Eclipse プラグインをインストールしましょう。
Groovy-Eclipse プラグインEclipse Marketplace から簡単にインストールできます。
ヘルプの Eclipse Marketplace を開いて "Groovy-Eclipse" で検索すれば直ぐにみつかります。
後は [Install] ボタンをクリックするだけで OK。便利な世の中になりましたね。


ステップ2. Groovy プロジェクトに変更しよう

既存の Java プロジェクトに Groovy Nature を追加します。
Java プロジェクトで右クリックして [Configure] --> [Convert to Groovy Project] を選択するだけです。
これで Groovy を使うために必要なライブラリがプロジェクトのビルドパスに追加され Groovy 使い放題です。


ステップ3. Spock のJARファイルをビルドパスに追加しよう

Spock のJARファイルを以下のURLからダウンロードしてビルドパスに追加します。

http://m2repo.spockframework.org/releases/org/spockframework/spock-core/0.5-groovy-1.8/spock-core-0.5-groovy-1.8.jar
もし JUnit4 がビルドパスに入っていないなら、ここで ついでに JUnit4 も追加しておきましょう。

これで EclipseJava プロジェクトで Spock を使うための準備は終わりです。
後は 好きなだけ Spec ファイルを作りましょう。

ここまで書いておいてなんですが...
ホントは こちら で紹介した ように Gradle で Spock するのが一番簡単でオススメなんですけどね。
でも Eclipse の方が取っ付きやすいですから...

と言うことで...
折角なので Spec ファイルを1つ作って実行してみましょう。

まずは メニューから [File] --> [New] --> [Groovy Class] と選択して、 以下のように入力すれば Spec ファイルを作成できます。
Superclass に spock.lang.Specification を設定する以外は特に普通のクラスを作成するのと 何も変わりません。


あとは

package com.bluepapa32

import spock.lang.Specification;

class HelloSpec extends Specification {
    def "length of Spock's and his friends' names"() {
        expect:
        name.size() == length

        where:
        name     | length
        "Spock"  | 5
        "Kirk"   | 4
        "Scotty" | 6
    }
}
のように 新しくフィーチャーメソッドを追加して JUnit と全く同じ要領で [Run As] --> [JUnit Test] で実行できます。
ちなみにSpockではテストメソッドのことをフィーチャーメソッドと呼びます。
実行結果も 以下のように JUnit と全く同じです。


エラーの場合も JUnit と同じように出力されます。
スタックトレースには Spock の特徴の一つでもある詳細なエラー情報 (Power Assert) が出力されます。

ただ、Eclipse だとプロポーショナルフォントで出力されるのでレイアウトが崩れてしまうのが非常に残念です。
スタックトレースのフォントの変更方法を知っている方はぜひ教えてください。


等幅フォントの設定方法を id:nobusue さんに教えていただきました。ありがとうございます。
設定方法については『Eclipse の JUnit ビューを等幅フォントでいい感じに表示する』を参照してください。