我将我的应用程序从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/project
,project/target
和target
,并运行命令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") )
答案 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
我升级了我的应用程序,现在一切似乎都有效。我可以随心所欲地执行我的测试并且可以正常工作。