对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()); } }