使用TestNG(Log4j2)捕获单元测试中的日志消息

时间:2019-05-31 22:45:13

标签: java logging testng log4j2

我创建了一个CaptureLogger,它扩展了AbstractLogger。我在该类中有代码,当发生日志记录事件时,它将捕获消息并将其存储在字符串数组中。

但是,我无法将此CaptureLogger挂接到我正在测试的类的记录器上。我试图做

public class CaptureLogger extends AbstractLogger {

    private List<Object> loggedMessages;
    public static Level messageLevel = Level.DEBUG;
    private static final long serialVersionUID = 1l; //one-ell

    public CaptureLogger(final String name) {
        super(name);
        loggedMessages = new ArrayList<>();
    }

    public List<Object> getLoggedMessages(){ return loggedMessages;}

    public void setLogLevel(final Level level){
        messageLevel = level;
    }

    @Override
    public boolean isEnabled(Level level) {
        return true;
    }

    @Override
    public void log(Level level, Object message){
        loggedMessages.add(message);
    }

    @Override
    public void log(final Level level, final Supplier<?> msgSupplier) {
        log(level, msgSupplier.get());
    }

    @Override
    public boolean isEnabled(Level level, Marker marker, Message message, Throwable t) {
        return level == messageLevel;
    }

ClassUnderTest是我要测试的类。

我们使用Lombok Log4j2在代码中创建和实例化我们的登录,所以我需要保留一些与Lombok一起使用的东西。

此外,我正在使用TestNG作为测试框架。

有人可以为此提供指针或代码示例吗?

谢谢

标记

编辑

这是我的CaptureLogger类的摘要:

{{1}}

0 个答案:

没有答案