7

在我使用specs2spray-testkit进行的一些较大的验收风格测试中,SBT 一直内存不足。我有 10 个演出或 RAM 可用,目前我启动 SBT(使用SBT extras 脚本),MaxPermSize 为 512m,Xms 为 1024m,Xmx 为 2g。

验收测试以特定顺序贯穿客户的整个业务流程,因此将验收测试拆分为多个较小的测试并不容易。

任何我可以更好地配置我的环境的想法,或者我应该注意的问题都将不胜感激。

对于它的价值,我在 Ubuntu 下使用 Oracle Java,该项目使用 Scala 2.10、sbt 0.12.2、spray 1.1-M7 和 specs2 1.14。

在测试之外运行系统或使用较小的测试时,一切都像发条一样运行。只有在更大的测试中,事情才会变得疯狂。

4

2 回答 2

7

您可以做的一件事是分叉您的测试,您可以直接在 build.sbt 中设置内存设置:

fork in Test := true

javaOptions in Test += "-Xmx2048m" // we need lots of heap space

这意味着测试不依赖于您使用 SBT extras 脚本运行,并且设置不会影响 sbt 本身。您还可以设置各种其他选项(请参阅Forking),包括更改工作目录,甚至是要使用的 JRE。

于 2013-03-20T12:13:55.880 回答
2

我怀疑您正在使用 specs2 不可变样式遇到指数问题。解决方案是简单地添加更多内存或将您的测试分解成更小的块。更多信息在这里:

http://www.artima.com/articles/compile_time.html

于 2013-03-20T23:20:09.710 回答