23

我在 VS 2012 中有一个托管 C++ 单元测试。测试运行良好,我可以验证是否cout执行了具有多个调用的循环。

但是,当我查看测试资源管理器时,测试被标记为已通过,但输出没有超链接,因为我习惯于 c# 项目。

我测试结束时的代码是

for (int i = 0; i < 4; i++)
{
    cout << parameters[i];
    cout << endl;
}

当我在调试器中单步执行它时,我可以验证它的运行情况。我也尝试过, cerr但没有区别。

4

4 回答 4

19

您可以使用 Debug::WriteLine()(在 System::Diagnostics 命名空间中)或 Console::WriteLine() 将输出写入 Visual Studio 2012 控制台。

测试代码(注意 System::Diagnostics 命名空间在别处声明)。 考试

测试结果视图。

在此处输入图像描述

点击“输出”链接后:

在此处输入图像描述

它没有使用 std::cout,但希望这能满足您的需要。

于 2013-07-10T16:17:12.370 回答
17

对我来说似乎可以使用:

Logger::WriteMessage("What ever message");

运行测试后,您可以Test Explorer通过单击在窗口中看到输出output

于 2013-09-15T14:22:48.840 回答
2

我不知道我能给你一个明确的答案,但我或许能提供一个线索。

在自定义构建步骤期间需要将输出输出到控制台窗口的旧代码中,我使用了以下几行:

_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++ 的输出通过构建输出窗口显示出来。希望它可以帮助您进行单元测试。

于 2013-07-10T19:45:38.697 回答
1

根据 Microsoft connect trx 和测试结果已弃用

:(

http://connect.microsoft.com/VisualStudio/feedback/details/750184/test-results-window-does-not-show-test-results

于 2013-07-03T17:35:44.750 回答