如何在Grails 2.4.x +中将日志消息重定向到测试报告?

pk_*_*k__ 7 grails

我最近将Grails 2.2项目更新到2.4.4并且我发现在运行'grails test-app'时,所有日志消息(信息,调试,错误等)现在都输出到控制台而不是生成测试报告.

以前所有日志输出都将附加到测试报告的主体,我只会在控制台中收到测试结果.现在,默认行为是将日志消息打印到控制台中,使得在运行数百个测试时难以解析输出.

| Compiling 1 source files....
| Running 2 unit tests... 1 of 2
2015-02-05 12:16:53,965 [main] INFO  testapp.HelloController  - Hello World Log
| Completed 1 unit test, 0 failed in 0m 5s
| Tests PASSED - view reports in /Users/pk/workspace/testapp/target/test-reports
Run Code Online (Sandbox Code Playgroud)

我已经确认这是Grails 2.4.4的默认行为(可能在之前的某个时间).有趣的是,通过'println'命令直接打印到stdout的消息出现在日志文件中.

有谁知道如何更改此行为以将所有日志输出打印到测试报告而不是控制台?

小智 -1

将 -echoOut 开关添加到 grails test-app,https://grails.org/wiki/1.2%20Release%20Notes

grails test-app -echoOut
Run Code Online (Sandbox Code Playgroud)

测试应用程序上还有许多其他有用的开关,包括:

echo System.err 消息:

grails test-app -echoErr
Run Code Online (Sandbox Code Playgroud)

在运行测试之前强制清理(不执行 grails clean && grails test-app):

grails test-app -clean
Run Code Online (Sandbox Code Playgroud)

只运行单元测试:

grails test-app unit:
Run Code Online (Sandbox Code Playgroud)

仅运行集成测试:

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

在特定环境中运行:

grails -Dgrails.env=production test-app
Run Code Online (Sandbox Code Playgroud)

仅针对特定测试类(例如 com.foo.MyControllerTests)运行测试,请务必省略“Tests”后缀

grails test-app com.foo.MyController
Run Code Online (Sandbox Code Playgroud)

仅重新运行上次运行测试时失败的测试

grails test-app 输出到控制台