pen*_*ake 124 .net c# unit-testing console-application visual-studio
我在Visual Studio中有一个测试项目.我使用Microsoft.VisualStudio.TestTools.UnitTesting.
我在我的一个单元测试中添加了这一行:
Console.WriteLine("Some foo was very angry with boo");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,测试通过,但控制台窗口根本没有打开.
有没有办法让控制台窗口可以通过单元测试进行交互?
Tia*_*rte 163
有人在VS2013中评论了这个显然是新的功能.我一开始并不确定他的意思,但现在我知道,我认为它应该是它自己的答案.
我们可以正常使用Console.WriteLine并显示输出,但不是在Output窗口中,而是在我们单击测试详细信息中的"Output"后的新窗口中.
Mic*_*eld 118
注意:以下原始答案适用于通过VS2012的任何VS版本.VS2013似乎不再具有"测试结果"窗口.相反,如果您需要特定于测试的输出,可以使用@ Stretch的建议Trace.Write()
将输出写入"输出"窗口.
该Console.Write
方法不会写入"控制台" - 它会写入连接到正在运行的进程的标准输出句柄的任何内容.类似地,Console.Read
从任何连接读取输入都连接到标准输入.
当您通过VS2010运行单元测试时,测试工具会重定向标准输出并将其存储为测试输出的一部分.您可以通过右键单击"测试结果"窗口并将名为"输出(StdOut)"的列添加到显示中来查看.这将显示写入stdout的任何内容.
您可以使用P/Invoke手动打开控制台窗口,如@ sinni800所述.从阅读AllocConsole
文档,似乎该功能将重置stdin
并stdout
处理指向新的控制台窗口.(我对此并不是100%肯定;如果我已经重定向stdout
到Windows以从我那里窃取它,那对我来说似乎有点不对,但我还没试过.)
但总的来说,我认为这是一个坏主意; 如果您只想使用控制台来转储有关单元测试的更多信息,那么输出就在那里.继续使用Console.WriteLine
您的方式,并在完成后在"测试结果"窗口中检查输出结果.
Dmi*_*lov 34
您可以使用此行写入Visual Studio的输出窗口:
System.Diagnostics.Debug.WriteLine("Matrix has you...");
Run Code Online (Sandbox Code Playgroud)
希望有所帮助
Won*_*ane 27
如上所述,单元测试旨在无需交互即可运行.
但是,您可以像任何其他代码一样调试单元测试.最简单的方法是使用"测试结果"选项卡中的"调试"按钮.
能够调试意味着能够使用断点.因此,能够使用断点意味着能够使用Tracepoints,我发现它在每天的调试中非常有用.
实际上,Tracepoints允许您写入"输出"窗口(或者更准确地说,写入标准输出).(可选)您可以继续运行,也可以像常规断点一样停止运行.这为您提供了所需的"功能",无需重新构建代码,也无需填写调试信息.
只需添加断点,然后右键单击该断点即可.选择"When Hit ..."选项:
这会打开对话框:
有几点需要注意:
有关详细信息,请参阅文档.
yoy*_*oyo 21
有几种方法可以在C#中编写Visual Studio单元测试的输出:
在Visual Studio 2013 Professional中确认.
归档时间: |
|
查看次数: |
142382 次 |
最近记录: |