我在VS 2012中有一个托管的C++单元测试。测试可以正常运行,并且我可以验证执行了多个cout
调用的循环。
然而,当我查看测试资源管理器时,测试标记为已通过,但没有像我在C#项目中所习惯的输出超链接。
我的测试末尾代码如下:
for (int i = 0; i < 4; i++)
{
cout << parameters[i];
cout << endl;
}
我可以验证它在调试器中单步运行。我还尝试使用cerr
但没有任何区别。
我在VS 2012中有一个托管的C++单元测试。测试可以正常运行,并且我可以验证执行了多个cout
调用的循环。
然而,当我查看测试资源管理器时,测试标记为已通过,但没有像我在C#项目中所习惯的输出超链接。
我的测试末尾代码如下:
for (int i = 0; i < 4; i++)
{
cout << parameters[i];
cout << endl;
}
我可以验证它在调试器中单步运行。我还尝试使用cerr
但没有任何区别。
Assert.IsNotNull(null, result);
将输出与错误消息连接起来,我也使用了文件写入,但这很麻烦。问题是在我的系统中,从Console
或Debug
输出的结果不是100%可靠的。是否有某种设置可以检查开启或关闭? - user2727195对我来说,似乎使用以下方式起作用:
Logger::WriteMessage("任何信息");
运行测试后,您可以通过单击输出
在测试资源管理器
窗口中查看输出。
我不确定我能给你一个明确的答案,但我也许可以提供一个线索。
在我的旧代码中,需要在自定义构建步骤期间将输出发送到控制台窗口时,我使用了以下行:
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
在http://msdn.microsoft.com/en-us/library/8hyw4sy7(v=vs.71).aspx上有_CrtDbgReport的描述。
对我而言,这使得我的托管C++输出显示在构建输出窗口中。希望它能帮助你进行单元测试。