繁体   English   中英

如何在Spy类的Groovy中使用Spock框架对测试日志记录错误进行单元测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM