В дополнение к ответу Роланда я предоставлю свое мнение. Во-первых - я не думаю, что вы должны использовать System.out/System.err в своем коде, даже в Unit Tests. Я подниму две основных причины (более релевантных для испытаний):
Производительность (система регистрации подключена и настроена правильно будет сделать юнит-тесты значительно быстрее работают)
Жесткости обработки - вы можете настроить систему регистрации для потоковой передачи вывода в файл или что-то еще, а затем обработать его. В CI вы можете создать нерегулярную реализацию системы регистрации (привязки), и это, вероятно, самый быстрый способ их запуска. Дело в том, что вы можете решить.
Например, вы можете использовать SLF4J системы- использовать модуль апи в тестах (только интерфейсы классов регистратора) и 2 соответствующие обязательные:
- простой привязки (перенаправление к файлам)
- НЕТ -op binding - ничего не печатать
В производственном коде вы можете использовать реальную привязку к реальной системе регистрации на ваш выбор.
Теперь, если вы абсолютно необходимо перенаправить System.out
и System.err
в другое место (скажем, файл) есть старая техника:
System.setOut(new PrintStream(new WhatEverOutputStreamYouWant()));
System.setErr(__Just__the__same__as__above__)
Вы можете написать некоторые JUnit Правило, которое будет вызываться для каждого TestCase и вы будете установлены.
Надеюсь, что это поможет
Как указано в задании, есть уже сформированный результат, который необходимо обработать. Так что подавление всего не будет полезно, я думаю !? – loonytune
@ Inian: loonytune прав, у меня есть выход, который я хочу обработать. Я просто хочу, чтобы выход по умолчанию был отключен. –
@MarkusWeninger: немного манипуляции 'bash' с чем-то вроде' java -cp 'bin: lib/* "org.junit.runner.JUnitCore my.Tests | при чтении строки; do echo "$ {line //./} "; done' – Inian