使用Maven进行Grails集成测试

时间:2012-08-10 14:48:39

标签: testing grails maven integration

首先,我对缺乏实施Grails前端测试的文档感到震惊。 GroovyPagesTestCase类使测试变得非常容易,因此没有理由让FE Devs不测试。但无论如何,这是我的问题。在我的工作中,我正在和Maven一起运行Grails。当我需要运行我的测试时,执行测试的唯一成功命令是:

mvn grails:test-app

并运行所有测试。但是,我真的希望在测试驱动代码时更快地移动,有谁知道如何只在这种环境中运行集成测试?我自己找不到任何东西。

3 个答案:

答案 0 :(得分:3)

grails命令是grails test-app :integration

鉴于此,我相信您应该能够使用grails:exec目标来运行任意命令,如此mvn grails:exec -Dcommand=test-app -Dargs=:integration

不太确定mvn在等号后如何处理冒号。如果vanilla语法不会删除它,您可以在:integration周围尝试引号或双引号。

这基于http://grails.org/doc/latest/guide/commandLine.html#4.5 Ant和Maven。

更新:grails test-app -unitgrails test-app -integration也受支持,这可能更符合Maven的喜好。

答案 1 :(得分:2)

Grails 1.x

mvn -Dargs=CircleTests -Dcommand=test-app grails:exec
mvn grails:test-app will always execute all tests

最好将其与-unit / -integration结合使用,以避免为其他阶段进行耗时的准备工作(示例使用名为CircleTests的测试;在参数中删除后缀):< / p>

mvn -Dargs="-unit Circle" -Dcommand=test-app grails:exec

您可以使用由空格分隔的模式和多个名称:

mvn "-Dargs=Square Ci*le" -Dcommand=test-app grails:exec

Grails也理解特殊的--unit和-integration名称:

mvn -Dargs=-unit -Dcommand=test-app grails:exec

或运行单一方法:

mvn -Dargs=Circle.DrawSmallEllipse -Dcommand=test-app grails:exec

Grails 2.x

使用新的Grails版本,这不再起作用了,因为grails:exec以开发模式而不是测试模式运行。您现在可以执行以下任一操作:

mvn -Dgrails.cli.args="integration: Circle" grails:test-app
mvn -Dgrails.cli.args="-integration Circle" grails:test-app
mvn -Dgrails.env=test -Dargs="integration: Circle" -Dcommand=test-app grails:exec

答案 2 :(得分:0)

关于grails 2.x这对我最有用:

所有集成测试:

mvn grails:exec -Dgrails.env=test -Dcommand=test-app -Dargs=:integration

单一测试类:

mvn grails:exec -Dgrails.env=test -Dcommand=test-app -Dargs=:integration -Dargs=NameOfYourIntegrationTests

测试类中的单个方法:

mvn grails:exec -Dgrails.env=test -Dcommand=test-app -Dargs=:integration -Dargs=NameOfYourIntegrationTests.testMethod

希望有所帮助