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。
これは最初にテストコードを作成する時のひな形になる。
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
import spock.lang.Specification
#parse("File Header.java")
class ${NAME} extends Specification {}
つぎにLive Templates。
自分は 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とか入れとけば動くはず。こんな感じに。
補足:
EclipseからIntelliJに移行したてだけど、以下の設定はとりあえず自分好みにした。
・command + d でduplicate だったのをdeleteにした。(Eclipseに合わせた)
・Editor > Virtual Space > Allow placement of caret after end of line のチェックを外した(自分には使い辛い。。)
まぁそんなところで。
エンジョイ!グルービー!!