2011-01-16 3 views
0

Я использую MSTest для запуска некоторых тестов (на C#). Одна из подпрограмм, которые я тестирую, создает новый процесс, и этот процесс часто сбрасывает некоторые выходные выходные данные. Я бы хотел записать этот результат в тесте. Хотя не важно проверить, не прошел ли тест, очень полезно выяснить, почему тест не удался. Как я могу это сделать?Захват stdout из прогона подпроцесса во время теста в mstest

Некоторые детали. К сожалению, я не могу коснуться кода, который создает процесс. Хуже того, это C++, и он вызывается через обертку C++/CLI. Если я создаю консольное приложение .NET (в C#), то stdout подпроцесса, который я хочу захватить, появляется в окне консольного приложения при его вызове. Когда я запускаю тот же код в контексте MSTest, создание подпроцесса открывает новое окно, а подпроцесс выдает свой вывод в этом окне. Это то, что я хотел бы сделать, если это вообще возможно.

Большое спасибо!

ответ

0

Если вы дважды щелкните результат теста после его завершения, вы также увидите страницу отчета, содержащую файл stdout. Затем вы можете увидеть здесь Redirecting stdout of one process object to stdin of another как перенаправить ваш дочерний процесс stdout и просто отразить это в начале тест (т. е. вызов Console.Write())

+0

Спасибо за предложение! К сожалению, это не сработает - у меня нет контроля над командой создания процесса. Существует какая-то разница между процессом windows и консольным процессом, и это связано с stdout. Итак, что мне нужно сделать, это: a) определить, существует ли действующий stdout. Если ничего не делать. б) Если его не создать и прочитать по потоку, и в) все чтение должно быть скопировано в Console.WriteLine. – Gordon

Смежные вопросы