模拟测试中的记录器类



我需要在@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;
}

然后在您的测试代码中,将记录器设置为模拟的记录器。

相关内容

  • 没有找到相关文章

最新更新