2013-05-29 5 views
23

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

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

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

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

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

+0

Если бы я должен был использовать Console.WriteLine или Debug.WriteLine все еще ничего в окне вывода. – n8CodeGuru

+0

Можете ли вы вместо этого использовать Google Test, как описано [в этом вопросе] [1]? [1]: http://stackoverflow.com/questions/16531398/how-can-i-add-a-unit-test-to-ac-console-program-in-visual-studio- 2012 – MichaelH

ответ

1

Согласно Microsoft Connect TRX и результаты испытаний являются устаревшими

:(

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

+0

Хотя есть билет на соединение, объявив, что это не поддерживается, я вижу информацию об отладке в окне вывода. Не уверен, почему он работает с перерывами – n8CodeGuru

+0

Хотя этот вопрос был для C++. Я прямо задаю этот вопрос для C#. Ответ - это иногда не работает. Я не знаю, почему. Но он работает ... – n8CodeGuru

19

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

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

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

enter image description here

После нажатия на "Output" ссылка:

enter image description here

Он не использует зЬй :: COUT, но, надеюсь, это будет делать то, что вам нужно это делать.

+2

Есть ли способ смотреть его вживую? Это возможно в NUnit. – Babak

+1

@Babak - Я не знаю, как смотреть этот вид выхода вживую. Хороший вариант для просмотра живого выхода использует OutputDebugString() и описан в этом ответе: http://stackoverflow.com/a/1333542/542494 –

+0

СПАСИБО БОГ! Иисус, вы не поверите, как трудно найти этот ответ. Спасибо. – Drew

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++ отображения через окно вывода сборки. Надеюсь, это поможет вам с Unit Testing.

16

Для меня, кажется, работает с помощью:

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

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

+0

Мне пришлось изменить «Показать вывод из:» с «Общий» на «Тесты» в окне «Вывод» (Ctrl + W, O). – kjhf

+0

Это, кажется, единственный способ в «родных» тестах. Благодарю. – ManicQin

+0

Какая ссылка необходима, чтобы сделать Logger доступным? –

Смежные вопросы