Я замечаю какое-то странное поведение, используя стандартное ведение журнала во время тестов JUnit. Переводит ли JUnit стандартный вывод на другой поток? Как я могу получить доступ к этому?Weird поведение журнала 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)
Почему не сообщение 1 или сообщение 2 показать в Standard Output часть выходного JUnit?
Спасибо!
+1 Спасибо! Я настраиваю тест, который выводит как файл журнала, так и консоль с обычным. Файл журнала был хорошим, но консоль продолжала печатать результаты не в порядке. Изменение его на StreamHandler устранило проблему. –