[英]How to unit test logging error with Spock framework in groovy in a Spy-Class
我有一个类,其中包含必须模拟的方法。
这就是为什么我使用Spy()的原因:
MyClass myClass = Spy(MyClass)
提出以下问题: 如何在Groovy中使用Spock框架对记录错误进行单元测试我可以成功获取记录消息,但是对于这一点,我无法仅使用此类的常规实例化:
MyClass myClass = new MyClass()
当类是间谍时,如何在Spock测试中获取日志消息?
测试日志记录的一种通用方法是编写一个简单的追加器,将事件存储在内存中,设置日志记录配置以在测试中使用它,然后在运行测试的代码后,获取记录的事件并进行验证。
假设使用Logback,则可以这样编写测试附加程序:
public class InMemoryAppender extends AppenderBase<ILoggingEvent> {
private static final List<String> events = new ArrayList<>();
public static synchronized List<String> getEvents() {
return new ArrayList<>(events);
}
@Override
protected void append(ILoggingEvent event) {
synchronized(InMemoryAppender.class){
events.add(event.getFormattedMessage());
}
}
}
我认为间谍没有任何帮助,因为它是在对象的方法上而不是在其内部行为上进行间谍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.