Я использую MSTest для запуска некоторых тестов (на C#). Одна из подпрограмм, которые я тестирую, создает новый процесс, и этот процесс часто сбрасывает некоторые выходные выходные данные. Я бы хотел записать этот результат в тесте. Хотя не важно проверить, не прошел ли тест, очень полезно выяснить, почему тест не удался. Как я могу это сделать?Захват stdout из прогона подпроцесса во время теста в mstest
Некоторые детали. К сожалению, я не могу коснуться кода, который создает процесс. Хуже того, это C++, и он вызывается через обертку C++/CLI. Если я создаю консольное приложение .NET (в C#), то stdout подпроцесса, который я хочу захватить, появляется в окне консольного приложения при его вызове. Когда я запускаю тот же код в контексте MSTest, создание подпроцесса открывает новое окно, а подпроцесс выдает свой вывод в этом окне. Это то, что я хотел бы сделать, если это вообще возможно.
Большое спасибо!
Спасибо за предложение! К сожалению, это не сработает - у меня нет контроля над командой создания процесса. Существует какая-то разница между процессом windows и консольным процессом, и это связано с stdout. Итак, что мне нужно сделать, это: a) определить, существует ли действующий stdout. Если ничего не делать. б) Если его не создать и прочитать по потоку, и в) все чтение должно быть скопировано в Console.WriteLine. – Gordon