2013-05-29 16 views
23

Ich habe eine verwaltete C++ Unit Test in VS 2012. Der Test läuft gut und ich kann überprüfen, dass eine Schleife mit mehreren cout Aufrufe ausgeführt wird.Wie bekomme ich Konsolenausgabe in Visual Studio 2012 Komponententests

Wenn ich jedoch den Test Explorer betrachte, wird der Test als bestanden markiert, aber es gibt keinen Hyperlink für die Ausgabe, wie ich es für C# Projekte gewohnt bin.

Der Code am Ende meines Tests ist

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

die ich Läufe überprüfen kann, wie ich durch es im Debugger Schritt. Ich habe auch versucht mit cerr aber keinen Unterschied.

+0

Wenn ich Console.WriteLine verwenden waren oder Debug.WriteLine noch nichts im Ausgabefenster. – n8CodeGuru

+0

Können Sie stattdessen Google Test wie in dieser Frage beschrieben [1] verwenden? [1]: http://stackoverflow.com/questions/16531398/how-can-i-add-a-unit-test-to-ac-console-program-in-visual-studio- 2012 – MichaelH

Antwort

1
+0

Obwohl es ein Verbindungsticket gibt, das dies nicht unterstützt, sehe ich meine Debugging-Informationen im Ausgabefenster. Nicht sicher, warum es intermittierend funktioniert – n8CodeGuru

+0

Obwohl diese Frage für C++ war. Ich stelle diese Frage explizit für C#. Die Antwort ist, dass es manchmal nicht funktioniert. Ich bin mir nicht sicher warum. Aber es funktioniert ... – n8CodeGuru

19

Sie Debug verwenden können :: Writeline() (im System :: Diagnostics Namespace) oder Konsole: : WriteLine() zum Schreiben der Ausgabe in die Visual Studio 2012-Konsole

Code für den Test (beachten Sie, dass der Namespace System :: Diagnostics an anderer Stelle deklariert ist.) The Test

Die Testergebnisansicht.

enter image description here

Nach dem Klicken auf den "Output" link:

enter image description here

Es ist nicht std :: cout ist, aber hoffentlich wird das tun, was Sie brauchen, es zu tun.

+2

Gibt es eine Möglichkeit, es live zu sehen? Es ist möglich in NUnit. – Babak

+1

@Babak - Ich bin mir nicht bewusst, wie ich diese Art von Ausgabe live sehen kann. Eine gute Option, Live-Ausgaben zu sehen, verwendet OutputDebugString() und wird in dieser Antwort beschrieben: http://StackOverflow.com/a/1333542/542494 –

+0

DANKE GOTT! Jesus, du würdest nicht glauben, wie schwer es ist, diese Antwort zu finden. Vielen Dank. – Drew

2

Ich weiß nicht, dass ich Ihnen eine definitive Antwort geben kann, aber ich kann Ihnen vielleicht einen Hinweis geben.

In meinem älteren Code, der während eines benutzerdefinierten Schritt in das Konsolenfenster zu bekommen Ausgang benötigt, habe ich die folgenden Zeilen:

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

Es gibt eine Beschreibung bei http://msdn.microsoft.com/en-us/library/8hyw4sy7(v=vs.71).aspx für _CrtDbgReport.

Für mich hat dies die Ausgabe von meinem verwalteten C++ durch das Build-Ausgabefenster angezeigt. Ich hoffe, es kann Ihnen beim Komponententest helfen.

16

Für mich scheint mit zu arbeiten:

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

Nachdem Sie den Test ausführen können Sie die Ausgabe im Test Explorer Fenster sehen, indem Sie auf output

+0

Ich musste die "Zeige Ausgabe von:" von "Allgemein" zu "Tests" im Ausgabefenster ändern (Strg + W, O). – kjhf

+0

Dies scheint der einzige Weg in den "nativen" Tests zu sein. Vielen Dank. – ManicQin

+0

Welche Referenz wird benötigt, um Logger verfügbar zu machen? –