いままでは IntelliJ IDEA 上で JUnit によるユニットテストを実行していたのですが、Play! のバージョンを 2.1.1 から 2.1.3 にマイグレーションした際に IntelliJ 上での JUnit 実行ができなくなってしまい、解決法を探るのが面倒そうだったので play test
で暫定対処しようとしたものの、こちらもこちらでいろいろと地雷が埋まっていたので解消・回避方法をメモしておくことにします。
その 1 : 'play clean' してから 'play test' する
とりあえず play test
してその結果が以下の表示になる場合は、 play clean
をしましょう。
[warn] 1 warning
[info] No tests to run for test:test
ここ に書かれているとおり、
You might try doing a play clean and then try play test again. I was getting the same "No tests to run" message until I did a clean.
ということで、play clean
する必要があるそうです。play のコンソールを立ち上げた状態で clean
タスクを実行しても思ったようにクリーンされないようなので、いったん play コンソールを抜けてから play clean
するとよいです。
その 2 : junit-interface で work around する
上記の play clean
をしてから play test
をしても、(テストクラスは認識されるものの) それぞれのテストケースの実行結果が
[info] 0 tests, 0 failures, 0 errors
などと、個々のテストメソッドが実行されないことがあります (というかほぼ確実に実行されない?)。
そのような場合は、こちら に書かれているとおり、Build.scala
に junit-interface への依存関係を追加すると問題を回避できます。
以下は Build.scala
への追記例です。
val appDependencies = Seq(
// Add your project dependencies here,
javaCore,
javaJdbc,
javaEbean,
"play" %% "play-test" % play.core.PlayVersion.current % "test" exclude("com.novocode", "junit-interface"),
"com.novocode" % "junit-interface" % "0.9" % "test"
)
これでやっと play test
でユニットテストが実行できるはず!