我有一个Class,里面有我要模拟的方法。
这就是我使用Spy()的原因:
MyClass myClass = Spy(MyClass)
有以下问题: How to unit test logging error with Spock framework in groovy 我可以成功获取日志消息,但对于这个,我不能只使用类的正常实例化,如:
MyClass myClass = new MyClass()
当Class是间谍时,如何在Spock测试中获取日志消息?
答案 0 :(得分:0)
测试日志记录的一般方法是编写一个简单的appender,它将事件存储在内存中,设置日志记录配置以在测试中使用它,然后,在运行测试代码之后,获取记录的事件并验证它们。
假设使用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());
}
}
}
我不认为间谍有什么可以帮助解决这个问题,因为它会窥探对象的方法,而不是内部行为。