IntelliJでSpockを書く

最近周りの人の推しIDEに IntelliJ が増えてきたのでやってみた。
本当はScalaをやろうと思ったのだけど、ScreencastでSpockの紹介がやってたので、興味がそっちにいってしまった。



結論から先に言うと、IntelliJは自分と相性いいかも。
そう思った理由として、command + shift + t でテストクラスと行き来できるところ。
これがあればテストをGroovyで書いても Quick JUnit Plugin みたいに使える


ただ最初は補完とか設定とか全然分からなくて何度もEclipseに戻ろうかと思った。


そんな僕を諦めずに支えてくれたのがこのScreencast。
Groovy/Spock好きの人は是非。



http://tv.jetbrains.net/videocontent/ffff
http://tv.jetbrains.net/videocontent/spock-and-mock-object-basics



というわけで、上記URLにも紹介されているが、IntelliJでSpockを楽に使う為のちょっとした設定をしてみる。
まず、File Templates。
これは最初にテストコードを作成する時のひな形になる。
f:id:tan_go238:20120310011814p:image

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end

import spock.lang.Specification

#parse("File Header.java")
class ${NAME} extends Specification {

}

つぎにLive Templates。
f:id:tan_go238:20120310011815p:image
自分は spwt(When-Then), spgwt(Given-When-Then), spew(Expect-Where), spwtw(When-Then-Where) を登録した。
内容はそれぞれこんな感じ。
忘れちゃいけないのが、Applicable Contexts のところで Groovy にチェックを入れること。(最初どこで設定するのか分からなくて全然キーが効かなくて泣きそうになった)


Abbreviation: spwt
Description: Spock When-Then

def "$NAME$"() {
when:
$END$

then:
true
}


Abbreviation: spgwt
Description: Spock Given-When-Then

def "$NAME$"() {
given:
$END$

when:

then:
true
}


Abbreviation: spew
Description: Spock Expect-Where

def "$NAME$"() {
expect:
$END$

where:
}


Abbreviation: spwtw
Description: Spock When-Then-Where

def "$NAME$"() {
when:
$END$

then:

where:
}

上記設定をすることで、自分の環境では command + j (macなので)で候補に出てきた。
※Screencastでは「control + j を押して〜」って言っているから自分の環境だけ??

あとはspock動かすのに必要なjarとか入れとけば動くはず。こんな感じに。
f:id:tan_go238:20120310011816p:image



補足:
EclipseからIntelliJに移行したてだけど、以下の設定はとりあえず自分好みにした。
・command + d でduplicate だったのをdeleteにした。(Eclipseに合わせた)
・Editor > Virtual Space > Allow placement of caret after end of line のチェックを外した(自分には使い辛い。。)

まぁそんなところで。

エンジョイ!グルービー!!