如何加快grails测试执行速度

时间:2009-06-02 21:47:33

标签: performance unit-testing grails junit

在开发Grails 1.0.5应用程序时,我对grails test-app命令的速度感到震惊。即使实际测试只需要约10秒,整个执行也会增加

  实际1m26.953s   用户0m53.955s   sys 0m1.860s

这包括grails bootstrapping,加载插件,编译所有代码等等。

非常感谢任何有关如何加快grails test-app执行速度的提示。

7 个答案:

答案 0 :(得分:35)

您可以使用交互模式加快测试运行。

跑步

grails interactive

然后输入

test-app

第一次与往常一样,但每次之后都会快得多。目前交互模式存在一些问题(例如几次运行后耗尽内存)但我仍然认为值得。

答案 1 :(得分:6)

没有任何硬性和快速的规则可以加快速度,而您所看到的性能问题可能与您的应用有关。

如果你的引导需要大约75秒,那听起来很长。我会仔细查看你的Bootstrap.groovy文件中的任何内容,看看是否可以减少它。

您是否有任何额外的插件可能不需要(或者可能会造成重大的性能损失)?

这对你来说可能不太可能,但是grails 1.1.1 / groovy 1.6.3比grails 1.0.5 / groovy 1.5.7的速度提升还算相当显着。

在测试时真正帮助我的另一件事是,如果我正在进行一项或另一项工作,则仅指定集成测试或仅指定单元测试:

grails test-app -unit

grails test-app -integration

您还可以指定一个特定的测试类(没有“Tests”前缀),以运行一个真正有助于TDD的测试(例如“MyServiceTests”集成):

grails test-app -integration MyService

在grails 1.1.1中,使用5个插件和~40个域类进行自举需要不到20秒。

答案 2 :(得分:1)

如果您仍在使用Groovy 1.5.x,那么升级到Groovy 1.6可能会浪费几秒钟

答案 3 :(得分:1)

grails现在安装了http://grails.org/plugin/testing。这会模仿域名,因此您可以对域类进行一些测试,如 unit 测试。他们跑得很快。

答案 4 :(得分:1)

请在此处查看我的回答。依赖于定义不明确的maven工件的插件可能会导致grails每次都看起来更新版本。

Grails very slow to resolve certain dependencies

答案 5 :(得分:1)

您也可以选择并行运行单元测试和集成测试 - 请参阅此article

答案 6 :(得分:1)

增加java内存/ JVM选项肯定可以加快速度。您可以提供的内存量取决于您的设备。

如果从命令行运行grails,请设置GRAILS_OPTS环境变量。将这样的内容添加到~/.bash_profile

export GRAILS_OPTS="-Xms3000M -Xmx3000M -XX:PermSize=256m -XX:MaxPermSize=512m"

如果您使用GGTS(Eclipse),则需要将其添加到运行配置的VM参数中。 GGTS vm args

还有一些JVM设置可以修改以提高速度:

-XX:+UseCodeCacheFlushing 
-XX:MaxInlineLevel=15  
-noverify  (turns off class validation)