我有一个使用Java api的记录器,在单元测试中,我将标准的输出设置为我的输出,并检查是否正在打印消息(日志,异常等...)我的代码是
ByteArrayOutputStream mockedOutput = new ByteArrayOutputStream();
System.setOut(new PrintStream(mockedOutput));
System.setErr(new PrintStream(mockedOutput));
但是日志未在输出中捕获,如果我检查控制台(Eclipse或通过maven运行),则日志存在,这意味着该日志未通过我的输出。如果将log替换为system.out.print,那么它将起作用,我还可以看到异常等等,只有在javaed API中记录的内容未在嘲笑的输出中捕获。
有人有主意吗?我没头绪了。
包括更多的代码和logging.properties文件,因为输出取决于记录器的时间以及创建处理程序的时间。
如果您依靠ConsoleHandler来写入流,则必须延迟创建记录器。这是因为ConsoleHandler will capture a snapshot of System.err。
没有看到您的代码,您需要确保:
Logger.getLogger("")
来完成的。