gpt4 book ai didi

java - 单元测试和日志记录

转载 作者:行者123 更新时间:2023-12-02 07:51:10 24 4
gpt4 key购买 nike

我有几个类:StateProcessorState。我想为 StateProcessor.process(State) 方法编写一个测试。这个方法的逻辑很简单,但是包含了很多日志消息。

logger.info(state.getSourse().toString());
if (state.getTarget() == Target.A) {
logger.info(state.getCreationTime());
service.doSmth(state);
} else {
logger.info(state.getTagret().getName());
service.doOtherStff(state);
}

我不想将真实的 State 实例传递给 process 方法,因为这个类非常复杂,需要很多行代码来构建它。所以,我想传递用 Mockito 创建的模拟对象。根据主要逻辑,我只需要模拟 getTarget() 方法。但在 state.getTagret().getName()state.getSourse().toString() 处,执行将失败并出现 NPE。但我不喜欢 mock 所有这些方法的想法!他们仅用于记录。另外,我不想每次添加一些日志消息时都修复我的测试。

日志记录在那里非常有用,所以我根本不想删除它。但是仅仅为了日志记录而模拟这些方法看起来很奇怪。

我该如何解决这个问题?

最佳答案

考虑模拟 DEEP 。这将导致每个方法调用返回一个模拟而不是 null 并防止 NPE。

 Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS);

关于java - 单元测试和日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com