有没有办法加快Intellij中Play Framework的单元测试的构建时间?我在做TDD。每当我执行测试时,编译大约需要30-60秒。即使是简单的 Hello World 测试也需要时间。即使没有任何更改,重新运行相同的测试仍将启动 make 过程。
我在使用Scala编写的Play 2.3.8上的Intellij 14.1上。
我已经尝试将java编译器设置为eclipse,并尝试将Scala编译器设置为SBT。
答案 0 :(得分:3)
在intellij 14.1.2中,我所做的解决方法是:
1)从测试中移除make
(Edit Configurations
- > Defaults
- > Scala Test
- > Before launch
- >( - ){ {1}})
2)使用Make
(例如:activator
)或(play
)
~ test:compile
(或activator ~test:compile
)
这可以防止Intellij在每次调用sbt ~ test:compile
时调用播放编译服务器。编译被委托给外部sbt / activator / play进程进行连续编译。缺点是,当您在编译完成之前立即运行测试时,您可能会收到NoClassDefinedFound异常。此外,您还需要监控额外的流程。然而,与Intellij的默认设置(目前)相比,这种设置要快得多。希望这对任何人都有帮助。
答案 1 :(得分:2)
我将假设您知道问题是构建时间 - 测试本身的实际运行时间可以忽略不计。
你对硬件有什么看法?根据我的经验,4GB内存不足以让Intellij Scala表现良好 - 我认为它需要一个大磁盘缓存(操作系统使用免费RAM)。 SSD也有帮助。使用性能监视器或类似操作系统来查看时间是磁盘,CPU还是网络。如果是CPU,请考虑堆大小是否有问题。
你的构建过程是什么样的?是否有插件?你的项目有多大?
更新
在没有更改的情况下触发完全重建是错误的。您的测试中是否存在修改项目目录的内容?如果你运行虚拟无操作测试,它会做同样的事情吗?您是否可以将日志写入项目树?例如?
在我有限的经验中,完整在Intellij下的Play版本比纯Scala版本慢了几个数量级 - 我猜是因为所有的SBT插件(视图编译器,xScript编译器,xSS编译器)等等)必须运行。但增量并不那么痛苦。
在OSX上,为“性能监视器”阅读“活动监视器”。
更新
有关缓慢增量Play版本的其他人的经验和解决方法,请参阅Intellij issue SCL-8235。投票支持该问题以提高其优先级并更快地修复。
答案 2 :(得分:0)
如何取消标记现有测试并仅留下您的测试?右键单击测试目录(应为绿色)和Unmark as Test Source Root
。