有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java模拟测试中的记录器类

我需要模拟@Service类中的记录器来进行测试。我想验证是否将创建记录器消息。(SLF4J记录器)

我想我可以使用@Bean类来实现这一点,并使记录器成为spring上的托管Bean

但是我需要使用创建记录器。注入服务的类

有人知道怎么做吗

内森,谢谢你的重复标签和建议

我的问题是我不能使用单元测试或没有spring上下文的测试,因为我必须使用两个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);
       }
    }

我需要检测记录器。警告电话

谢谢


共 (1) 个答案

  1. # 1 楼答案

    这不是一个巧妙的方法,但它的工作

    private void setLogger(Logger logger){
        this.logger = logger;
    }
    

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