Grails 3(至少3.1.10)在仅运行特定测试时是不稳定的。如何让它运行单个集成测试?
答案 0 :(得分:7)
以下是运行单个集成测试的示例命令
grails test-app *LoginFunctional* -integration
如果在模式之前放置-integration标志,test-app命令将忽略该模式并执行所有集成测试。
答案 1 :(得分:1)
官方命令行语法为grails test-app
,可选地后跟一个模式,以匹配您要测试的完整命名空间类名,例如org.myorg.ClassToTest
或org.**.*
和{{ 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
并在指定的类上运行测试。