【发布时间】:2010-10-08 15:40:10
【问题描述】:
我注意到在 JUnit 测试期间使用标准日志记录有一些奇怪的行为。 JUnit 是否将标准输出重定向到不同的流?我怎样才能访问它?
这是一个简单的 JUnit 测试,演示了我所描述的行为。
@Test
public void logMessage() {
// set up new logger with output directed to standard out
Logger logger = Logger.getLogger("my.test.logger");
logger.addHandler(new StreamHandler(System.out, new SimpleFormatter()));
// log a warning message
logger.warning("logger message"); // message 1
// turn off parent handlers
logger.setUseParentHandlers(false);
// log a second warning message
logger.warning("second logger message"); // message 2
// print somehting to standard output
System.out.println("standard output message"); //message 3
}
请注意,我创建了一个新的记录器,它只是将其日志消息发送到标准输出 (System.out)。
这是 Junit 输出
Testsuite: com.my.FormatterTest
Feb 19, 2009 12:02:33 PM com.my.FormatterTest logMessage
WARNING: logger message
standard output message
Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.079 sec
------------- Standard Output ---------------
standard output message
------------- ---------------- ---------------
------------- Standard Error -----------------
Feb 19, 2009 12:02:33 PM com.my.FormatterTest logMessage
WARNING: logger message
------------- ---------------- ---------------
Feb 19, 2009 12:02:33 PM com.my.FormatterTest logMessage
WARNING: logger message
Feb 19, 2009 12:02:33 PM com.my.FormatterTest logMessage
WARNING: second logger message
test:
BUILD SUCCESSFUL (total time: 2 seconds)
message 1 或 message 2 为什么不显示在 JUnit 输出的标准输出 部分?
谢谢!
【问题讨论】: