如何在grails 3中运行单个集成测试?

时间:2016-09-29 13:45:15

标签: unit-testing grails automated-tests

Grails 3(至少3.1.10)在仅运行特定测试时是不稳定的。如何让它运行单个集成测试?

3 个答案:

答案 0 :(得分:7)

以下是运行单个集成测试的示例命令

grails test-app *LoginFunctional* -integration

如果在模式之前放置-integration标志,test-app命令将忽略该模式并执行所有集成测试。

答案 1 :(得分:1)

官方命令行语法为grails test-app,可选地后跟一个模式,以匹配您要测试的完整命名空间类名,例如org.myorg.ClassToTestorg.**.*和{{ 1}}或-unit选择特定阶段。请参阅docs

但Grails 3.1.10中存在许多怪癖。

1)-integration并不总是运行测试,可能是依赖关系管理中的一个错误。如果您首先在grails test-app grails删除测试报告,则会看到实际需要执行某些操作来生成新报告。

2)有时事情会随机变得奇怪。如果是,请build/reports/tests/index.html。 (我还没弄清楚你是否真的需要它们或只需要其中一个。)

3)官方方式应该有效,但如果没有,则先做(2)。此外,如果您只想运行特定的集成测试,则需要添加grails clean; grails test clean,否则您将收到错误消息。我认为没有这样的标志Grails无条件地首先尝试运行单元测试然后进行集成测试,如果你的测试模式与任何单元测试都不匹配,那么grails会出错。同样,如果模式仅匹配单元测试添加-integration,或者您将收到错误,但在这种情况下您仍然可以获得正确的测试报告。

4)通过使用-unit标志,还有另一种方法。这将设置由gradle拾取的系统属性。如果我还添加了-Dtest.single=<classname>标志,我只能正常工作,但我没有深入调查。

答案 2 :(得分:1)

我通常使用注释@IgnoreRest。请记住import spock.lang.IgnoreRest并在指定的类上运行测试。