Visual Studio本地单元测试:调试/控制台输出?

23

有人能告诉我如何在Visual Studio 2012的本地(C ++)测试项目中运行单元测试时启用或获取调试或控制台文本输出吗?

答案不应包含短语“使用Google Test”。


切换子系统到控制台会有帮助吗?(项目属性/链接器/系统) - Valentin H
很好的想法,但是遗憾地没有。我的代码正在使用 OutputDebugStringA 和 OutputDebugStringW 输出文本。我猜我需要使用其他库吗? - Robinson
4
我已几乎解决了它。如果您右键单击测试资源管理器窗口中的任何测试并选择 `debug',则调试输出将显示在调试输出窗口中。否则不会显示。 - Robinson
3个回答

25
在单元测试代码中,可以使用。
Logger::WriteMessage("My message string");

信息将出现在输出窗口中。


2
只有在TEST_CLASS的TEST_METHOD上下文中,且包含#include "CppUnitTest.h"时才能正常工作,而不是在任何地方。 - tschumann
如果你在顶部添加 "using Microsoft::VisualStudio::CppUnitTestFramework::Logger",它就能正常工作。 - toujames

8
布莱恩的答案是正确的。 使用
Logger::WriteMessage("some text");

在运行测试时,您无需调试,只需正常运行即可。但是,您还需要在“输出”窗口顶部的“显示来自”下拉列表中选择“Tests”。 VS 2013 输出窗口选中 Tests 输出

1
Visual Studio 2019中的用户界面保持不变:在“输出”窗口的顶部有一个“测试”选项,这就是输出将出现的地方。 - MikeB

2

如果您在测试资源管理器窗口中右键单击并选择“调试”,则调试输出将显示在调试输出窗口中。否则,它不会显示。


主菜单 -> 测试 -> 窗口 -> 测试资源管理器,然后右键单击窗口中的一个测试以打开其上下文菜单,并从中选择调试。 - Robinson
在使用OutputDebugString(L"Message");时,这在VS 2017中似乎是正确的。 - Elliot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接