栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java 如何在记录器中对消息执行JUnit断言

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 如何在记录器中对消息执行JUnit断言

我也需要几次。我在下面整理了一个小样本,你可以根据需要进行调整。基本上,你可以创建自己的

Appender
并将其添加到所需的记录器中。如果你想收集所有内容,那么根记录器是一个很好的起点,但是如果你愿意,可以使用更具体的信息。完成后,请不要忘记删除Appender,否则可能会导致内存泄漏。下面,我在测试中完成了此操作,但根据你的需要,setUp或者
@Before
/ tearDown
@After
可能是更好的地方。

同样,下面的实现将所有内容收集到一个List内存中。如果记录很多,你可能会考虑添加一个过滤器以删除无聊的条目,或将日志写入磁盘上的临时文件(提示:

LoggingEventis Serializable
,因此,如果你的日志消息是,则应该能够序列化事件对象是。)

import org.apache.log4j.AppenderSkeleton;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.spi.LoggingEvent;import org.junit.Test;import java.util.ArrayList;import java.util.List;import static org.hamcrest.CoreMatchers.is;import static org.junit.Assert.assertThat;public class MyTest {    @Test    public void test() {        final TestAppender appender = new TestAppender();        final Logger logger = Logger.getRootLogger();        logger.addAppender(appender);        try { Logger.getLogger(MyTest.class).info("Test");        }        finally { logger.removeAppender(appender);        }        final List<LoggingEvent> log = appender.getLog();        final LoggingEvent firstLogEntry = log.get(0);        assertThat(firstLogEntry.getLevel(), is(Level.INFO));        assertThat((String) firstLogEntry.getMessage(), is("Test"));        assertThat(firstLogEntry.getLoggerName(), is("MyTest"));    }}class TestAppender extends AppenderSkeleton {    private final List<LoggingEvent> log = new ArrayList<LoggingEvent>();    @Override    public boolean requiresLayout() {        return false;    }    @Override    protected void append(final LoggingEvent loggingEvent) {        log.add(loggingEvent);    }    @Override    public void close() {    }    public List<LoggingEvent> getLog() {        return new ArrayList<LoggingEvent>(log);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号