2013-05-29 6 views
23

Ho un test C++ gestito in VS 2012. Il test funziona correttamente e posso verificare che venga eseguito un ciclo con più chiamate cout.Come ottenere l'output della console in Test di Visual Studio 2012

Tuttavia, quando guardo all'esploratore di test, il test è contrassegnato come superato ma non esiste un collegamento ipertestuale per l'output come sono abituato a per i progetti C# .

Il codice alla fine del mio test è

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

che posso verificare eseguito come faccio un passo attraverso nel debugger. Ho anche provato con cerr ma nessuna differenza.

+0

Se dovessi usare Console.WriteLine o Debug.WriteLine ancora nulla nella finestra di output. – n8CodeGuru

+0

Puoi invece utilizzare Google Test come descritto [in questa domanda] [1]? [1]: http://stackoverflow.com/questions/16531398/how-can-i-add-a-unit-test-to-ac-console-program-in-visual-studio- 2012 – MichaelH

risposta

1
+0

Anche se c'è un ticket di connessione che dichiara che questo non è supportato, vedo le mie informazioni di debug nella finestra di output. Non sono sicuro del motivo per cui funziona a intermittenza – n8CodeGuru

+0

Anche se questa domanda riguardava il C++. Sto chiedendo esplicitamente questa domanda per C#. La risposta è che a volte non funziona. Non sono sicuro del perché. Ma funziona ... – n8CodeGuru

19

È possibile utilizzare Debug :: WriteLine() (nella System :: Diagnostics namespace) o Console: : WriteLine() per scrivere l'output sulla console di Visual Studio 2012.

Codice per il test (si noti che lo spazio dei nomi System :: Diagnostics è dichiarato altrove) The Test

La vista del risultato del test.

enter image description here

Dopo aver cliccato sul link "Uscita":

enter image description here

Non usa std :: cout, ma spero che questo farà quello che avete bisogno di fare.

+2

C'è un modo per vederlo dal vivo? È possibile in NUnit. – Babak

+1

@Babak - Non sono a conoscenza di un modo per vedere dal vivo questo tipo di output. Una buona opzione per guardare l'output live utilizza OutputDebugString() ed è descritta in questa risposta: http://stackoverflow.com/a/1333542/542494 –

+0

THANK DIO! Gesù, non crederesti quanto sia difficile trovare questa risposta. Grazie. – Drew

2

Non so che posso darti una risposta definitiva, ma potrei essere in grado di fornire un indizio.

Nel mio codice più vecchio che aveva bisogno di ottenere l'output nella finestra della console durante una fase di generazione personalizzata, ho usato le seguenti righe:

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

v'è una descrizione a http://msdn.microsoft.com/en-us/library/8hyw4sy7(v=vs.71).aspx per _CrtDbgReport.

Per me, questo ha reso visibile l'output dal mio C++ gestito attraverso la finestra di output di compilazione. Spero che ti possa aiutare con i test unitari.

16

Per me sembra funzionare utilizzando:

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

Dopo aver eseguito il test si può vedere l'output nella finestra Test Explorer cliccando sul output

+0

Ho dovuto modificare "Mostra output da:" da "Generale" a "Test" nella finestra Output (Ctrl + W, O). – kjhf

+0

Questo sembra essere l'unico modo nei test "nativi". Grazie. – ManicQin

+0

quale riferimento è necessario per rendere disponibile il Logger? –

Problemi correlati