我有几个类别:StateProcessor和国家。 我想写一个测试方法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);
}
我不想真正国家实例传递给过程方法,因为这个类是非常复杂,它需要大量的代码来构建它的行。所以,我想传递Mockito创建的模拟对象。根据主要逻辑,我只需要模拟getTarget()方法。但执行将失败,NPE处于state.getTagret()。getName()和state.getSourse()。toString()。但我不喜欢嘲笑所有这些方法的想法!他们只用于记录。另外,我不想每次添加日志消息时都修复测试。
日志记录在那里非常有用,所以我根本不想删除它。但嘲笑仅用于记录日志的方法看起来很奇怪。
我该如何解决这个问题?
难道你不能配置测试环境来切断所有的'logger.info'消息,同时让你的dev显示它们吗? – 2012-04-18 15:34:18
对不起,我没有明白你的意思。日志记录在当前时间被禁用。但我不能删除所有这些logger.info行 – NullPointer 2012-04-18 15:39:05
我的意思是什么第一个回答状态 – 2012-04-18 16:00:23