Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了groovy – 与Spock嘲笑slf4j大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个用@ Slf4j注释的Groovy类,所以它得到一个私有的最终Logger日志字段,我想测试它的用法.我想继续使用@ Slf4j并且不再公开日志字段以启用测试.

我正在使用Spock 1.0编写测试,并尝试使用Spock的集成模拟和存根功能来完成此操作.全局存根应该帮助我拦截LoggerFactory调用获取实际的Logger实例,所以我目前的猜测是这样的

LoggerFactory logFactory = Groovystub(global: truE)
logFactory.getLogger(_) >> mock(Logger)
// create my @Slf4j-Annotated object afterWARDs

有趣的是,拦截实际上是有效的,println确认该类实际上获得了一个名为’dummy’的类型’Logger’的对象mock,但指示存根返回模拟的第二个语句似乎没有捕获.相反,认存根行为返回另一个存根,当然不能用于模拟:

org.spockframework.runtime.InvalidSpecException: stub 'dummy' matches the following required interaction:

1 * plugin.log.warn(_)   (0 invocations)

Remove the cardinality (e.g. '1 *'),or turn the stub into a mock.

我需要更改什么才能让存根的LoggerFactory返回模拟Logger?

解决方法@H_675_20@
您需要使用反射设置私有最终日志字段,如下所述: Unit testing of a class with StaticLoggerBinder

大佬总结

以上是大佬教程为你收集整理的groovy – 与Spock嘲笑slf4j全部内容,希望文章能够帮你解决groovy – 与Spock嘲笑slf4j所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。