2013-05-29 49 views
23

我在VS 2012中有一個託管的C++單元測試。測試運行正常,我可以通過 驗證是否有多個cout調用的循環被執行。如何在Visual Studio 2012單元測試中獲得控制檯輸出

但是,當我看看測試瀏覽器的測試標記爲通過 ,但沒有超鏈接的輸出,因爲我習慣了c# 項目。

在我的測試結束的代碼是

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

,我可以驗證運行作爲我通過 它在調試步驟。我也試過用 cerr但沒什麼區別。

+0

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

運行測試後,你可以看到在Test Explorer窗口輸出。如果我是使用Console.WriteLine或Debug.WriteLine在輸出窗口中仍然沒有任何內容。 – n8CodeGuru

+0

你能否按照[在這個問題] [1]中描述的方式使用Google Test? [1]:http://stackoverflow.com/questions/16531398/how-can-i-add-a-unit-test-to-ac-console-program-in-visual-studio- 2012 – MichaelH

回答

1
+0

雖然有連接票證聲明這不支持我看到我的輸出窗口中的調試信息。不知道爲什麼它間歇地工作 – n8CodeGuru

+0

即使這個問題是針對C++的。我明確地問這個問題的C#。答案是有時不起作用。我不知道爲什麼。但它確實有效... – n8CodeGuru

19

您可以使用調試:的WriteLine()(在System ::診斷命名空間)或控制檯: :WriteLine()將輸出寫入Visual Studio 2012控制檯

測試代碼(請注意System :: Diagnostics名稱空間在其他地方聲明) The Test

測試結果視圖。

enter image description here

點擊 「輸出」 鏈接後:

enter image description here

它不使用std ::法院,但希望這會做你需要它做什麼。

+2

有什麼方法可以觀看它嗎?這可能在NUnit中。 – Babak

+1

@Babak - 我不知道有什麼方法可以直接觀看這種輸出。觀看實時輸出的一個很好的選擇使用了OutputDebugString(),並在此答案中進行了描述:http://stackoverflow.com/a/1333542/542494 –

+0

THANK GOD! 耶穌,你不會相信找到這個答案有多難。謝謝。 – 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++的輸出通過構建輸出窗口。希望它能幫助你進行單元測試。

16

對於我來說,似乎使用的工作:通過點擊output

+0

我必須在輸出窗口(Ctrl + W,O)上將「顯示輸出:」從「常規」更改爲「測試」。 – kjhf

+0

這似乎是「本地」測試的唯一方法。謝謝。 – ManicQin

+0

需要什麼參考才能使記錄器可用? –

相關問題