我需要在@Service类中模拟一个记录器才能进行测试。我想验证是否会创建记录器消息。(SLF4J Logger)
我认为我可以使用@Bean类,并使Logger在春季成为托管bean。
,但我也需要使用注射服务的.LASS创建记录器。
有人知道该怎么做?
nathan,感谢重复标签和建议的appender。
我的问题是,我不能没有弹簧上下文使用单元测试或测试,因为我必须与两个DBS进行集成测试。
和弹簧的测试不允许在第一个测试中模拟记录器,而不会影响下一个测试。
示例:
@Service
class MigrateDataService{
@Autowired private FirstDB firstDB;
@Autowired private SecondDB secondDB;
Logger logger = LoggerFactory.getLogger(MigrateDataService.class);
@Transactional(...)
public void migrate(){
Data data firstDB.getData();
if(data.isWarn()){
logger.warn("Data {} is warning", data);
}
secondDB.save(data);
}
}
我需要检测到logger.warn调用。
谢谢...
这不是一种光滑的方法,而是起作用。
private void setLogger(Logger logger){
this.logger = logger;
}
然后在您的测试代码中,将记录器设置为模拟的记录器。