为什么在使用激活器测试从Play 2.2.2迁移到2.3后没有执行测试?

时间:2014-06-24 16:01:54

标签: sbt playframework-2.3

我将我的应用程序从Play 2.2.2升级到2.3。我的应用运行良好。

有时activator test会提供以下输出:

[info] Loading project definition from /Users/myapp/project
[info] Set current project to myapp (in build file:/Users/myapp/)
[info] Compiling 23 Scala sources and 180 Java sources to /Users/myapp/target/scala-2.10/classes...
[info] Compiling 55 Java sources to /Users/myapp/target/scala-2.10/test-classes...
[success] Total time: 112 s, completed 24 juin 2014 17:53:06

那就是......没有进行任何测试。如果我尝试运行testOnly,则找不到它。

另外,即使我没有更改任何文件,每次尝试测试我的应用时,都会重新编译源代码。 Play 2.2并非如此。

我甚至没有更多的日志可供展示。当我尝试使用activator ui进行测试时,我有更多日志,但也没有运行测试。

如果我手动删除文件夹project/projectproject/targettarget,并运行命令activator test,则每个测试类都会出现以下错误:

[error] Execution of test functional.actor.UserEditInformationTest failed: java.lang.ClassNotFoundException: functional.actor.UserEditInformationTest
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[error]     at java.security.AccessController.doPrivileged(Native Method)
[error]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[error]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[error]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
[error]     at com.novocode.junit.JUnitRunner$1.execute(JUnitRunner.java:120)
[error]     at sbt.ForkMain$Run$2.call(ForkMain.java:294)
[error]     at sbt.ForkMain$Run$2.call(ForkMain.java:284)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[error]     at java.lang.Thread.run(Thread.java:744)
[info] functional.actor.UserEditInformationTest
[info] ! functional.actor.UserEditInformationTest
[error] sbt.ForkMain$ForkError: functional.actor.UserEditInformationTest
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[error]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[error]     at java.security.AccessController.doPrivileged(Native Method)
[error]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[error]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[error]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

如何解决问题?

修改 我的build.sbt文件:

name := "myapp"

version := "1.0.0"

scalaVersion := "2.10.4"

offline := true

// Play Core dependencies
libraryDependencies ++= Seq(
    javaJdbc,
    javaEbean,
    cache
)

// Specific dependencies
libraryDependencies ++= Seq(
    ...
)

lazy val root = (project in file(".")).enablePlugins(PlayJava)

jacoco.settings

parallelExecution in jacoco.Config := false

fork in Test := true

javaOptions in Test += "-Dconfig.file=conf/application.test.conf"

testOptions in jacoco.Config += Tests.Setup( () => System.setProperty("config.file", "conf/application.test.conf") )

2 个答案:

答案 0 :(得分:3)

我在将应用程序从Play 2.2.1升级到2.3.7时遇到了同样的问题。不知何故,似乎Eclipse正在干扰。我的个人解决方案是退出Eclipse,最终也退出激活控制台。然后我跑

 activator clean
 activator cleanFiles

然后

 activator test 

 activator testOnly <package>.<testClass>

有时它在第一次尝试时不起作用。当最终激活器找到(并运行)测试时,一切都顺利进行,我可以再次打开激活器控制台和Eclipse。

我希望这会有所帮助......

<强>更新

每次我写一个新的测试类时,testOnly都找不到它。我需要首先运行组合clean - cleanFiles以使testOnly找到它(在这种情况下无需关闭Eclipse)。

答案 1 :(得分:0)

播放2.3.1已发布:https://groups.google.com/forum/#!topic/play-framework/kz3iaBbPIwA

我升级了我的应用程序,现在一切似乎都有效。我可以随心所欲地执行我的测试并且可以正常工作。