How to get console output in Visual Studio 2012 Un

2019-04-18 01:27发布

I have a managed C++ unit test in VS 2012. The test runs fine and I can verify that a loop with multiple cout calls is executed.

However when I look at the test explorer the test is marked as passed but there is no hyper link for the output as I am used to for c# projects.

The code at the end of my test is

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

which I can verify runs as I step through it in the debugger. I have also tried with cerr but no difference.

4条回答
Lonely孤独者°
2楼-- · 2019-04-18 01:34
可以哭但决不认输i
3楼-- · 2019-04-18 01:35

You can use Debug::WriteLine() (in the System::Diagnostics namespace) or Console::WriteLine() to write output to the Visual Studio 2012 console.

Code for the test (note that the System::Diagnostics namespace is declared elsewhere). The Test

The test result view.

enter image description here

After clicking the "Output" link:

enter image description here

It is not using std::cout, but hopefully this will do what you need it to do.

查看更多
Explosion°爆炸
4楼-- · 2019-04-18 01:43

I don't know that I can give you a definitive answer, but I may be able to provide a clue.

In my older code that needed to get output to the console window during a custom build step, I used the following lines:

_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);

There is a description at http://msdn.microsoft.com/en-us/library/8hyw4sy7(v=vs.71).aspx for _CrtDbgReport.

For me, this made the output from my managed C++ show up through the build output window. Hope it can help you with Unit Testing.

查看更多
ゆ 、 Hurt°
5楼-- · 2019-04-18 01:53

For me seems to work using:

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

After you run the test you can see the output in the Test Explorer window by clicking on output

查看更多
登录 后发表回答