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

Jan*_*nis 8 grails automated-tests unit-testing

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

Jon*_*Tse 8

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

grails test-app *LoginFunctional* -integration
Run Code Online (Sandbox Code Playgroud)

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


Jan*_*nis 2

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

不过,Grails 3.1.10 中存在许多怪癖。

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

2)有时事情会变得随机奇怪。如果是这样,请执行grails clean; grails test clean. (我还没有弄清楚你是否真的需要它们两者或只需要两者之一。)

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

4)还有一种替代方法,即使用标志-Dtest.single=<classname>。这设置了 gradle 拾取的系统属性。只有添加了一个标志,我才能正常工作-unit,但我没有深入研究。