Hatena::ブログ(Diary)

bluepapa32’s Java Blog このページをアンテナに追加 RSSフィード Twitter

2011-12-02

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。便利な世の中になりましたね。


f:id:bluepapa32:20111203000346j:image:w360


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

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


f:id:bluepapa32:20111203000555j:image:w360


ステップ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 も追加しておきましょう。

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

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


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

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


f:id:bluepapa32:20111203000841j:image:w360

あとは

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 と全く同じです。


f:id:bluepapa32:20111203000839j:image:w360

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


f:id:bluepapa32:20111203000840j:image:w360

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


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

nobusuenobusue 2011/12/04 10:25 レイアウトが崩れる問題は、Groovy-Eclipseプラグインの設定で「Use monospace font for JUnit」にチェックを入れれば回避できるらしいです。「プログラミングGroovy」のAppendixで@nobeansさんが書いてました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/bluepapa32/20111202/1322839627