在开发Grails 1.0.5应用程序时,我对grails test-app
命令的速度感到震惊。即使实际测试只需要约10秒,整个执行也会增加
实际1m26.953s 用户0m53.955s sys 0m1.860s
这包括grails bootstrapping,加载插件,编译所有代码等等。
非常感谢任何有关如何加快grails test-app
执行速度的提示。
答案 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每次都看起来更新版本。
答案 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参数中。
还有一些JVM设置可以修改以提高速度:
-XX:+UseCodeCacheFlushing
-XX:MaxInlineLevel=15
-noverify (turns off class validation)