首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用junit断言org.slf4j.Logger语句?

如何使用junit断言org.slf4j.Logger语句?
EN

Stack Overflow用户
提问于 2022-03-08 15:29:01
回答 2查看 419关注 0票数 0

如何使用org.slf4j.Logger中的junit验证spring-boot-test中的日志语句

代码语言:javascript
复制
@Service
public class MyService {
    private final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(this.getClass());
    
    public void run() {
        LOGGER.info("running");
    }
}

@SpringBootTest
public class MyTest {
    @Autowired
    private MyService service;

    @Test
    public void test() {
        service.run();
        
        //TODO how to validate log statement?
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-01 08:31:19

我用Springs @ExtendWith(OutputCaptureExtension.class)找到了一个解决方案

代码语言:javascript
复制
@SpringBootTest
@TestPropertySource(properties = "logging.level.root=INFO")
public class LogServiceTest {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Test
    @ExtendWith(OutputCaptureExtension.class)
    public void testLogging(CapturedOutput capture) {
        logger.info("junit"); //can be replaced with any service call that logs
        assertThat(capture.getOut()).contains("junit");
    }
}

它需要在您的follow="true"配置中使用log4j选项:

<Console name="CONSOLE" target="SYSTEM_OUT" follow="true">

票数 1
EN

Stack Overflow用户

发布于 2022-03-09 18:53:58

如果底层的SLF4J是Log4j 2.x,就像标记可能包含的那样,您可以使用ListAppender,它包含在log4j-coretest-jar中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71397516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档