对lombbok @slf4j 进行测试用例

此文转载于:https://www.jvt.me/posts/2019/09/22/testing-slf4j-logs/

工具类

package com.justin.shell.lombook.slf4j;

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import org.slf4j.LoggerFactory;

/**
 * @ClassName LoggerTestUtil
 * @Description
 * @Author YuGuo
 * @Date: 2020-10-23 19:13:28
 */
public class LoggerTestUtil {

    public static ListAppender<ILoggingEvent> getListAppenderForClass(Class clazz) {
        Logger logger = (Logger) LoggerFactory.getLogger(clazz);

        ListAppender<ILoggingEvent> loggingEventListAppender = new ListAppender<>();
        loggingEventListAppender.start();

        logger.addAppender(loggingEventListAppender);

        return loggingEventListAppender;
    }
}

 服务类

package com.justin.shell.lombook.slf4j;

import lombok.extern.slf4j.Slf4j;

/**
 * @ClassName Slf4jService
 * @Description
 * @Author YuGuo
 * @Date: 2020-10-24 22:58:22
 */

@Slf4j
public class Slf4jService {
    public void printLog(){
        log.info("info");
        log.warn("warn");
        log.error("error");
    }
}

测试类

package com.justin.shell.lombook.slf4j;

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import org.junit.Assert;
import org.junit.Test;

/**
 * @ClassName Slf4jServiceTest
 * @Description
 * @Author YuGuo
 * @Date: 2020-10-24 22:59:38
 */
public class Slf4jServiceTest {

    private ListAppender<ILoggingEvent> logEvents = LoggerTestUtil.getListAppenderForClass(Slf4jService.class);

    @Test
    public void testPrint(){
        Slf4jService slf4jService = new Slf4jService();
        slf4jService.printLog();

        Assert.assertEquals(3, logEvents.list.size());  //可以看出event的大小和服务类输出日志的个数一样
        Assert.assertEquals("info", logEvents.list.get(0).getFormattedMessage());
        Assert.assertEquals("warn", logEvents.list.get(1).getFormattedMessage());
        Assert.assertEquals("error", logEvents.list.get(2).getFormattedMessage());
    }

}
原文地址:https://www.cnblogs.com/guoAIrong/p/13871569.html