【发布时间】:2012-04-18 15:30:22
【问题描述】:
我有几个类:StateProcessor 和 State。 我想为 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 将执行失败。但我不喜欢嘲笑所有这些方法的想法!它们仅用于记录。此外,我不想每次添加一些日志消息时都修复我的测试。
日志记录在那里非常有用,所以我根本不想删除它。但是只模拟日志记录的方法看起来很奇怪。
我该如何解决这个问题?
【问题讨论】:
-
您不能配置测试环境以切断所有
logger.info消息,同时让您的开发人员显示它们吗? -
对不起,我没明白你的意思。日志记录在当前时刻被禁用。但我无法删除所有这些 logger.info 行
-
我的意思是第一个回答的状态