我使用只有spock单元测试的grails项目来进行Web调用以验证一组Web服务。它使用RESTClient进行调用。
我最近从Grails 2.0.0升级到2.3.4,并将所有依赖项更新为最新版本。
使用GGTS下的旧环境运行单元测试,我曾经看到所有网络流量的痕迹 - 对于调试问题非常有用。现在缺少此跟踪,而是在每次测试开始时看到以下内容发送到stderr:
log4j:WARN No appenders could be found for logger (groovyx.net.http.RESTClient).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我在Setup.groovy中使用log4j配置搞砸了很多,但它没有任何效果(实际上我知道单元测试通常不会设置log4j)。
如何修复最新的groovyx.net.http.RESTClient以提供网络跟踪?
答案 0 :(得分:0)
啊 - 结果是Config.groovy中的log4j配置并不适用于GGTS的测试。我在source / groovy(即在类路径上)创建了一个文件log4j.xml,里面有这个,我可以看到那里的痕迹很好。
但是当我以grails test-app
运行测试时,Config.groovy配置确实有效。去图!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value=" %c{1} - %m%n" />
</layout>
</appender>
<category name="groovyx.net.http">
<priority value="DEBUG" />
</category>
<!-- Use DEBUG to see basic request/response info;
Use TRACE to see headers for HttpURLClient. -->
<category name="groovyx.net.http.HttpURLClient">
<priority value="INFO" />
</category>
<category name="groovyx.net.http.RESTClient">
<priority value="INFO" />
</category>
<category name="org.apache.http">
<priority value="INFO" />
</category>
<category name="org.apache.http.headers">
<priority value="INFO" />
</category>
<category name="org.apache.http.wire">
<priority value="DEBUG" />
</category>
<root>
<priority value="INFO" />
<appender-ref ref="console" />
</root>
</log4j:configuration>