IntelliJ IDEAのTemplate機能を使ってSpockのテストをもっと快適にしてみる

Spockの資料を漁っていたところ、とある動画を発見。観てみると、IDEAのTemplate機能を使ったとても便利な作業の効率化を紹介していたので、動画を参考にしつつ別途エントリとして書き起こしてみました。

動画はこちら。


そして以下手順メモ。

テンプレートの準備

  • [IntelliJ IDEA]→[Preferences]→[Live Templates]を選択。


  • んで、この時点では[Spock]のグループが無いので作ります。先程作った項目を右クリック→[Move]→[New Group]を選択。


  • グループ名に『spock』と入力し[OK]押下。


  • これでグルーピングが出来ました。


  • 残りのものも併せて追記。

  • ちなみに、コード内容は以下になります。コピペしてお使いくださいw
  • -
spew / Spock Expect-Where
------------------------
def "$NAME$"() {
    expect:
    $END$
    
    where:
    // TODO: add where block.
}
spgwt / Spock Given-When-Then
------------------------
def "$NAME$"() {
    given:
    $END$
    
    when:
    // TODO: add when
    
    then:
    true
}
spwt / Spock When-Then
------------------------
def "$NAME$"() {
    when:
    $END$
    
    then:
    true
}
  • またこれに先立ち、上記テンプレートを使う前に作るべきSpecificationクラスを拡張したテストクラスのテンプレートも用意しちゃいましょう。
    • [IntelliJ IDEA]→[Preferences]→[File Templates]を選択
    • [+]で新要素設定
      • Name: Spock Specification
      • Extension: groovy
      • テンプレート内容: (後述)

テンプレート内容のテキストもこちらに貼っ付けて行きますね。|ω・)つ

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

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

}

実践してみる

上記設定が完了したら、早速試してみましょう。設定後、そのまま試したら今イチ動かなかったので念の為IDEA自体を再起動。

  • [File]→[New]で”Spock Specification"を選択。


  • テストクラス名を入力、[OK]押下。


  • 雛型が出来ました。


  • 次いでテンプレートの確認。略称を書いたところで該当するキーを押下(※今回の場合、デフォルト設定[Tab]だったのでTabを押下)すると...


  • テンプレート内容が一瞬で!そのまま赤枠が表示されている状態でメソッド名を入力出来ます。


  • メソッド名を入力し、そのまま(赤枠が残っている状態で)Enterを押下すると...


  • なんとそのままGiven節の先頭にカーソルが移動!(テンプレート内の$END$が効いていると思われる)


上記で設定した内容の他にも必要であれば同じ手法でテンプレートを増やせますし、これでよりSpockテスティングが快適になりますね!


(追記)
エントリ書いた後、自ブログから関連エントリを眺めていたら、既におれんじクローバー (TwitterID:@orange_clover)さんが同種の内容を過去に書いておられてました。

エントリ内容によると、[Ctrl+J]で関連補完内容が表示される→ショートカットを入力していく事で絞込が出来るんですね〜。これは便利!