2012年3月3日土曜日

Gradle + Groovy + Ideaをやってみよう

簡単なGradleのbuild.gradleファイルを作成してみた。

ビルドスクリプト


このbuildスクリプトはGoogle-guiceとh2データベースとjunitを入れるだけの簡単なプロジェクト。



読めば大体わかりますね。
javaとgroovyを使って、IntelliJ IDEAで開発できて、jarを最終的に吐き出すプロジェクトです。

GradleをMavenと比較して残念なところに、generate-archetypeみたいに、いい感じのディレクトリツリーを作ってくれるコマンドがないので、
とりあえず、ideaタスクの後に自作して強引に作るようにしています。


Tasks


Gradleでどのようなタスクがあるかを一覧表示します。



gradle tasksというコマンドがそれです。


プロジェクトの作成


では、ideaプロジェクトを作成しましょう。




gradle ideaコマンドとgradle structureコマンドを打つことでプロジェクトの構造が出来上がります。

実際にはideaタスクの後にstructureタスクを割りこませる方法があるんですが、忘れた…orz


プロジェクトの取り込み


では、作成したプロジェクトをideaで取り込みます。


Open Projectを選択します。

先程作成したgradle-study2.iprファイルを選択します。



こんな感じに依存性を解決したideaプロジェクトが作成されます。



GroovyでJUnit


JUnit4はPOJOまたはPOGOでできるので、GroovyでもJUnit4のテストを書けます。

では早速やってみましょう。

パッケージ作り忘れたので、src/test/groovyディレクトリで、[Alt + Insert]を押します。(MacではCtrl + n)




ここで「pa…」と入力すると、packageが選択できます。


適当にパッケージ名を入れましょう。



パッケージができたら、作成したパッケージのところでまたもや[Alt + Insert]。(MacではCtrl + n)

GroovyClassを選択します。



適当なので適当にクラス名を入れます。



早速、@Beforeから書いて行きましょう。



IDEAの素晴らしいところは、あの忌々しい[Ctrl + Space]を入れなくてもどんどん補完してくれる所




さらには依存性が解決している範囲で、あの忌々しい[Ctrl + 1]を入力しなくても、[Alt + Enter]で勝手にimport文を作ってくれるあたり。


なんか適当にlistとかいうフィールド、インスタンスを作ってみましたが、
これはフィールドとして設定しましょう。

listが初出の場所にカーソルを当てて、[Ctrl + Alt + f]、(Macの場合は[コマンド + alt + f])

でいい感じにフィールドを作成してくれます。



適度にスコープを選択して、defで割り当てましょう。


おもむろにテストを書いてみましょうか。

なんか、何もしていないのにアノテーションですら自動補完してくれます。



JUnit4をJavaでやるときはもちろん、org.junit.Assert.assertThatあたりを用いますが、
Groovyでテストをするときは、そんなもん使いません。

assertだけで十分です。


テストわざと間違えていますが…

テストを実行するのは、[alt + shift + F10]です。

何のテストを実行したいか選択して下さい。

メソッド単位で実行できます。



さて、実行結果です。
もちろんテスト間違えているので、どうなるか気になりますね。

テスト実行結果。



何がどういう値で、何が間違っているかがちゃんと表示されるんです。

これはGroovyだからできるんです。Power Assertと言います。

これはGroovyだからできるんです。Power Assertと言います。

大事な事ですから二度言いました。

これはGroovyだからできるんです。Power Assertと言います。


これがJUnitのassertThatなどだったら、expected<4> but got <3> くらいしか出してくれません。


この親切さ。これはGroovyだからできるんです。Power Assertと言います。


こいつはテストを直しておきます。



POJOのテスト


POJOもテストしましょう。もちろんテストはGroovyでやっちゃいます。


とりあえず、誰でも思いつきそうなPOJOでPersonというクラスを作ります。


メンバーはintのageとStringのfirstNameとlastNameです。

getterとsetter作らないとですね。


何もない所で、[alt + insert]を押します。(Mac版ちょっとど忘れ)



とりあえず、メンバー全部選択しましょう。



まあ、このあたりはeclipseでもやれるので、どうということはないですね。



じゃあ、テストを書きましょう。もちろんGroovyで。

Groovyでは特にコンストラクターが指定されていなければ、内部のフィールドに値を一気に代入させることができます。



ほんまかいな?と思うので、assertをかけてみましょう。




さ、テストを実行しましょう。


ほれ、ノープロブレム!!!!



Gradleに戻って


とりあえず、テストを落ちるようにしておきます。




では、gradleでテストを実行します。

テスト実行結果




さて、テストが2つコケたらしいですね。

では結果をhtmlファイルで見てみます。

これがレポートファイルです。


これらの詳細を見ることができます。




ちゃんとテストがどういう点が悪くてfailしたのか一目瞭然ですね。

というわけで、Gradle、あの複雑なpomを書かなくても、いい感じで、ココまでやってくれるのですから、今はAnt + Ivyだけどという人は是非トライしてみましょう。


0 件のコメント:

コメントを投稿