Подтвердить что ты не робот

Как получить консольный вывод в Visual Studio 2012 Unit Tests

У меня есть управляемый С++ unit test в VS 2012. Тест проходит отлично, и я могу убедитесь, что выполняется цикл с несколькими вызовами cout.

Однако, когда я смотрю на тестовый проводник, тест помечен как переданный но нет гиперссылки для вывода, поскольку я привык к С# проектов.

Код в конце моего теста

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

который я могу проверить, когда я прохожу через это в отладчике. Я также пробовал cerr, но никакой разницы.

4b9b3361

Ответ 1

Вы можете использовать Debug:: WriteLine() (в пространстве имен System:: Diagnostics) или Console:: WriteLine() для записи вывода на консоль Visual Studio 2012.

Код для теста (обратите внимание, что пространство имен System:: Diagnostics объявлено в другом месте). The Test

Результат результата теста.

enter image description here

После нажатия ссылки "Выход":

enter image description here

Он не использует std:: cout, но, надеюсь, это сделает то, что вам нужно.

Ответ 2

Для меня, похоже, работает, используя:

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

После запуска теста вы можете увидеть результат в окне Test Explorer, нажав output

Ответ 3

Я не знаю, что могу дать вам окончательный ответ, но я могу дать ключ.

В моем более старом коде, который должен был получить вывод в окно консоли во время пользовательского шага сборки, я использовал следующие строки:

_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.

Для меня это сделало вывод из моего управляемого С++-шоу через окно вывода сборки. Надеюсь, он поможет вам в тестировании устройств.