Play Framework 2和Scala - 如何从IDEA启动测试?

6

我从playframework2的示例文件夹中获得了计算机数据库应用程序:computer-database

  1. cd computer-database
  2. play
  3. test

结果是:所有测试都通过了。(这很好)

但是当尝试在IntelliJ IDEA中启动这些测试时:

  1. cd computer-database
  2. play idea
  3. 从idea打开项目
  4. 右键单击ModelSpec,然后-> Run' Model Spec ',然后得到消息“没有启动的应用程序java.lang.RuntimeException: 没有启动的应用程序”
  5. 如果:play run(运行应用程序),则会得到:Cache play已存在net.sf.ehcache.ObjectExistsException: Cache play already exists
  6. 如果去localhost:9000编译所有内容,应用演化脚本,则会再次得到没有启动的应用程序java.lang.RuntimeException: 没有启动的应用程序

问题是:如何从IDEA启动这些测试?

3个回答

3

尝试从IDEA的类路径中删除play-source jar。

您可以在“项目结构 -> 库”下找到它。


谢谢,这对我有帮助。选择播放库并从Classes中删除-sources.jar。 - Luis R.

2

我看到了与缓存播放已存在net.sf.ehcache.ObjectExistsException: Cache play already exists错误相同的问题。 我没有很好的解决方案,但我设法通过在application.conf文件中添加ehcacheplugin=disabled来绕过它。这暂时解决了问题。


我禁用了ehcache插件,这解决了我的缓存问题,但随后我发现我的单元测试无法更新记录!创建新记录很好,但使用save()或update()更新它们没有效果,因此我不得不重新启用ehcache插件。 - Rolf Staflin

1

我曾经遇到过同样的问题,原因可能是:

  • 在类路径中存在两个版本的play(2.1和2.0.4)
  • 或者ehcache本身被重复引用了。

因此,在这两种情况下,可以通过检查dependencies报告中的重复项,并在导入其他版本的依赖项(在您的sbt或.scala文件中)中添加notTransitive()来解决问题。

注意:notTransitive()将删除所有传递解析,您可以使用exclude("<def>")来排除其中一些以缩小传递解析范围--详尽地。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接