mavenプロジェクトでJUnitとSpockを実行する

最終更新日

背景

  • mavenのプロジェクト
  • JUnitでわずかながらテストが書かれていた
  • JUnitでテストを書き続けるのは辛い
  • Spockでテストを書きたい

※ gradleにspock導入経験有り

概要、やりたいこと

  • 既存のJUnitを残しつつ、Spockも追加していきたい
  • JUnitとSpockをひとつのコマンドで一発で実行したい(./mvnw test
  • spockがどう素晴らしいかなどは記載しません

って話です。
未だにMavenでJUnitを使ってテストしている人に捧ぐ…

環境

  • maven3
  • java8
  • groovy2.5

手順

流れ

  1. とりあえず、spockを追加してテストを書く
  2. mavenでgroovyファイルをコンパイル対象にする
  3. mavenで*Spec.ファイルをテスト実行対象にする

とりあえず、spockを追加してテストを書く

  1. pom.xmlに依存関係を追加

  2. テストを書く

  3. テスト実行してみる

    → compileされたファイルが生成されない & Spockも実行されていない

mavenでgroovyファイルをコンパイル対象にする

  1. gradleではspockを依存関係に入れるだけでgroovyファイルもコンパイルしてくれていたが、mavenではコンパイルしてくれなかったので以下を追加
    ※ maven-compiler-pluginは3.6.2以上じゃないと動かない模様(Groovy Eclipse Maven plugin参照)

  2. テスト実行してみる

    → compileされたファイルが生成された!
    → だがSpockは実行されない

mavenで*Spec.ファイルをテスト実行対象にする

  1. 上記maven-compiler-pluginの次に以下を追加

    maven-surefire-pluginのversionはjavaのversionによるので、Maven Surefire Plugin参照

  2. テスト実行してみる

    → compileされたファイルが生成された!
    → Spockも実行されたのでテスト落ちた!

→ Spockのテストを修正してテストが通れば完了!

結論

  • gradleには簡単にSpock入れられたのにmavenにSpock追加するのは大変
  • おとなしくgradle使いましょう

参考URL

Compiling Groovy
maven-surefire-plugin Using JUnit
groovy/groovy-eclipse Groovy Eclipse Maven plugin

stmon19

遊びが一番 人生遊び 好きにまみれてます

シェアする