PlayFramework2.1.3(Java) テスト0件問題を回避
play2.1.3(java)で UnitTestができない問題。
Play 2.1.3にするとJava版のテストが0件になる事案が発生し、MLでもあった模様 『Play 2.1.3 released https://t.co/6Ie7qdyB5Z
— Kazuhiro Hara(Legen) (@kara_d) 2013, 8月 7
Play 2.1.3 Javaでテスト0件な問題はMLにあった「testOptions in Test ~= { args => ...」なコードを入れることで無事動作しますた。
— Kazuhiro Hara(Legen) (@kara_d) 2013, 8月 7
とのことですた。
MLからパッチをいただく
Play 2.1.3 released - groups.google.com play-framework より
testOptions in Test ~= { args => for { arg <- args val ta: Tests.Argument = arg.asInstanceOf[Tests.Argument] val newArg = if(ta.framework == Some(TestFrameworks.JUnit)) ta.copy(args = List.empty[String]) else ta } yield newArg }
パッチあて
どこにあてんの?と思ったら project/Build.scala でした。
パッチをあてた samples/java/computer-database-jpa の project/Build.scala
import sbt._ import Keys._ import play.Project._ object ApplicationBuild extends Build { val appName = "computer-database-jpa" val appVersion = "1.0" val appDependencies = Seq( javaCore, javaJdbc, javaJpa, "org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final" ) val main = play.Project(appName, appVersion, appDependencies).settings( ebeanEnabled := false, // PATCH : JUnit tests in Play do not execute testOptions in Test ~= { args => for { arg <- args val ta: Tests.Argument = arg.asInstanceOf[Tests.Argument] val newArg = if(ta.framework == Some(TestFrameworks.JUnit)) ta.copy(args = List.empty[String]) else ta } yield newArg } ) }
テスト結果
[computer-database-jpa] $ test [info] play - datasource [jdbc:h2:mem:play-test--899905098;] bound to JNDI as DefaultDS [info] IntegrationTest [info] + IntegrationTest.test [info] [info] [info] Total for test IntegrationTest [info] Finished in 0.018 seconds [info] 1 tests, 0 failures, 0 errors [info] play - datasource [jdbc:h2:mem:play] bound to JNDI as DefaultDS [info] play - datasource [jdbc:h2:mem:play] bound to JNDI as DefaultDS [info] play - datasource [jdbc:h2:mem:play] bound to JNDI as DefaultDS [info] play - datasource [jdbc:h2:mem:play] bound to JNDI as DefaultDS [info] FunctionalTest [info] + FunctionalTest.filterComputerByName [info] + FunctionalTest.redirectHomePage [info] + FunctionalTest.createANewComputer [info] + FunctionalTest.listComputersOnTheFirstPage [info] [info] [info] Total for test FunctionalTest [info] Finished in 0.01 seconds [info] 4 tests, 0 failures, 0 errors [info] play - datasource [jdbc:h2:mem:play] bound to JNDI as DefaultDS [info] play - datasource [jdbc:h2:mem:play-test--1376794684;] bound to JNDI as DefaultDS [info] ModelTest [info] + ModelTest.findById [info] + ModelTest.pagination [info] [info] [info] Total for test ModelTest [info] Finished in 0.004 seconds [info] 2 tests, 0 failures, 0 errors [info] Passed: : Total 7, Failed 0, Errors 0, Passed 7, Skipped 0 [success] Total time: 12 s, completed 2013/08/15 21:17:30
無事テストできますた。
参考
Play 2.1.3 released - groups.google.com play-framework
SBT セッティングについて - playframework-ja.org
ここの「デフォルト値の Play プロジェクトセッティング」を読んでおくといいかもしれない。scalaを読めるようになっておくといいかもしれない。最近書いてないのでまた読めなくなってきた。