【发布时间】:2011-10-21 22:16:42
【问题描述】:
有很多例子展示了如何重定向另一个应用程序的标准输出。但是我想让应用程序保留它的标准输出,并且只在我的父进程中检索标准输出的副本。这可能吗?
我的场景:我有一些测试(使用 Visual Studio Test Runner)启动一个外部进程(服务器)来进行测试。服务器在其标准输出中输出了很多有用的调试信息,我想将这些信息包含在我的测试结果中。
我可以捕获进程输出并通过 Trace.WriteLine 将其输出,以便稍后显示在测试详细信息中。但是,最好在测试运行时查看服务器窗口及其输出以查看当前进度(测试可能会运行很长时间)。
所以我正在寻找方法来复制这些信息,而不是简单地重定向它。
有什么想法吗?
【问题讨论】:
-
嗯,也许 Echo/Tee 流可能会有所帮助? codeproject.com/KB/dotnet/echostream.aspx(google 'c# tee stream' 更多点击)
-
不确定,因为我无法在这里进行测试,但 Process.OutputDataReceived 事件可能会为您提供所需的行为,请参阅:msdn.microsoft.com/en-us/library/…
-
OutputDataReceived 是我正在使用的,但它需要流重定向,因此会从服务器控制台窗口中删除输出...
标签: c# .net unit-testing mstest stdout