我需要在 @Service 类中模拟一个 Logger 来进行测试。我想验证是否会创建记录器消息。 (SLF4J 记录器)
我想我可以使用@Bean 类来做到这一点,并使 Logger 在 spring 上成为托管 bean。
但我也需要使用注入(inject)服务的 .class 创建记录器。
有人知道怎么做吗?
Nathan,感谢重复标签和建议使用附加程序。
我的问题是我不能使用单元测试或没有 spring-context 的测试,因为我必须对两个数据库进行集成测试。
并且 spring 的测试不允许在不影响下一个测试的情况下在第一个测试中模拟记录器。
例子:
@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;
}
然后在您的测试代码中,将记录器设置为模拟记录器。
关于java - 在测试中模拟一个 Logger 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55300616/