2016-09-29 59 views

回答

1

官方的命令行语法为grails test-app,任选随后进行模式匹配,你要测试,如org.myorg.ClassToTestorg.**.*-unit-integration选择特定的阶段是什么完整的命名空间中的类名。请参阅docs。但是,在Grails 3.1.10中有一些怪癖。

1)grails test-app不会永远运行测试,可能是在依赖管理的错误。如果您第一次删除build/reports/tests/index.html的测试报告,grails会发现它实际上需要做一些事情来生成新报告。

2)有时候事情会随机地变得怪异。如果是这样,请执行grails clean; grails test clean。 (我还不弄清楚,如果你真的需要他们两个或仅两个中的一个)。

3)的正式方法应该可行,但这样做(2)第一,如果它没有。此外,如果您只想运行特定的集成测试,则需要添加-integration,否则您会收到错误消息。我认为,如果没有这样的标志,Grails无条件地首先尝试运行单元测试,然后进行集成测试,如果测试模式与单元测试不匹配,那么Grails将会出错。同样,如果模式只匹配单元测试,请添加-unit,否则您会收到错误消息,虽然在这种情况下仍然会得到正确的测试报告。

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

0

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

2

下面是一个简单的命令来运行一个单一的集成测试

grails test-app *LoginFunctional* -integration 

如果你把 - 整合国旗图案之前,测试-app命令将忽略模式,并执行所有的集成测试。

+0

最近这让我疯狂。谢谢。 – Lithium

相关问题