我正在尝试将IntelliJ与Play Framework 2.11应用程序一起使用。如何在Play Framework和Scala中使用IntelliJ
我安装了Play Framework 2插件和IntelliJ的Scala插件。
我创建了一个Play应用程序。我一直在努力编写和运行IntelliJ中的Specs 2测试。我的运行配置说运行Specs 2测试时首先运行“make”,但它看起来不像我的测试类正在生成。不断告诉我,它无法找到规格。当我查看文件系统时,目标/测试类中没有代码,该目录是空的。此外,至少与运行Play控制台相比,这似乎需要很长时间才能完成构建。
我想看看人们如何使用Play with IntelliJ。你只是使用IntelliJ作为编辑器,并通过Play控制台运行所有内容?
有没有一种方法可以在IntelliJ中运行应用程序测试(让测试类运行)?
我从来没有任何问题运行Play控制台并运行〜test-only test = xxx.Spec。它通常是相当快的。
这里是我在的IntelliJ获得异常,当我尝试运行我的Specs2测试:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSingleTest(JavaSpecs2Runner.java:130)
at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.main(JavaSpecs2Runner.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.RuntimeException: can not create specification: test.ApplicationSpec
at scala.sys.package$.error(package.scala:27)
at org.specs2.specification.SpecificationStructure$.createSpecification(BaseSpecification.scala:96)
at org.specs2.runner.ClassRunner.createSpecification(ClassRunner.scala:64)
at org.specs2.runner.ClassRunner.start(ClassRunner.scala:35)
at org.specs2.runner.ClassRunner.main(ClassRunner.scala:28)
at org.specs2.runner.NotifierRunner.main(NotifierRunner.scala:24)
... 11 more
到目前为止,这工作!非常感谢!我有一个棘手的问题,当你运行一个测试时,它会加载项目信息和一切,这需要很长时间。有什么方法可以更快地运行测试吗?我的猜测是它需要很长时间,因为它在启动测试之前运行“Make”。任何指针? – noplay 2013-04-24 23:47:15
还有一个问题,它看起来像插件创建了一堆XML文件,这些文件将这些类硬编码到Play安装的位置。我猜如果不止一个人在项目中工作,你需要确保每个人都有安装在同一文件路径上的游戏? – noplay 2013-04-24 23:56:48
到目前为止我的朋友很好。为了避免运行测试时的编译时间过长,我在IntelliJ中启动了SBT控制台并运行〜test:compile。然后,每次我做一个代码更改代码重新编译QUICKLY,无论是应用程序代码还是测试代码。在我的运行配置中,我在测试启动之前删除了“Make”。 BDD/TDD的速度非常快。 100万谢谢你的答案! – noplay 2013-04-25 00:35:33