【发布时间】:2020-08-24 18:50:18
【问题描述】:
我有一个使用 Mockito 模拟的类。原始类非常简单,如下所示。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyNewClass{
private static Logger logger = LoggerFactory.getLogger(MyNewClass.class);
/**
* Only for unit/integration test, otherwise no need to use this method.
*/
protected static void setLogger(Logger logger) {
MyNewClass.logger = logger;
}
}
方法logger.info("SomeString") 将打印到一个文件,因为它是为生产配置的。
在我的测试类中,我如何打印到控制台?我目前在 Eclipse 中。
public class MyNewClassTest{
private static Logger mockedLogger = Mockito.mock(Logger.class);
@Before
public void setUp() throws Exception {
MyNewClass.setLogger(mockedLogger);
// TODO how to print to console instead of file.
}
}
那么我如何覆盖mockedLogger.info("SomeString") 以打印到控制台,只需使用System.out.println()
【问题讨论】:
-
创建自己的 claas 来实现
Logger? -
注入记录器,不要静态构造它。像 PowerMock 这样的工具只能作为最后的手段使用,因为它们使用字节码操作。此外,您可以重新配置记录器以进行测试。
标签: java junit mockito powermock