Перенаправить стандартный вывод и стандартную ошибку при выполнении метода
У меня есть программа, которая тестирует каждый метод в Test#
подкласс и выводит XML в формате XML JUnit.
Например:
class ExampleTest : Test
{
Void testOne()
{
...
}
}
Я хочу выполнить testOne
метод и захват стандартного вывода и произведенная в нем стандартная ошибка. это out
а также err
вывод будет включен в отчет XML.
Моей первой идеей было посмотреть на sys::Env
, Класс среды sys::Env
имеет err
а также out
но только для чтения.
Моя вторая идея заключается в том, что sys::Process
можно запустить для каждого метода тестирования и перенаправить sys::Process#.err
а также sys::Process#.out
в этом, но я боюсь, что это будет очень медленно.
Есть другой способ сделать это?
1 ответ
Вы не сможете перенаправить вывод из вашего текущего процесса (и на самом деле не должны).
Если вывод абсолютно должен быть stdout/err
- вам нужно идти по маршруту процесса. Вы примете настройку fork/jvm/stream, но это может быть незначительным по сравнению с вашим временем выполнения теста.
Лучшим вариантом будет войти в систему с помощью Logging API - который даст больший контроль над тем, что регистрируется и куда идут вещи.