web-dev-qa-db-ja.com

Visual Studio 2012ユニットテストでコンソール出力を取得する方法

VS 2012でマネージC++ユニットテストを実行しています。テストは正常に実行され、複数のcout呼び出しを含むループが実行されていることを確認できます。

ただし、テストエクスプローラーを見ると、テストは合格とマークされていますが、c#プロジェクトで使用されている出力のハイパーリンクはありません。

テストの最後のコードは

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

デバッガーで実行すると、実行を確認できます。私もcerrを試しましたが、違いはありません。

23
bradgonesurfing

Debug :: WriteLine()(System :: Diagnostics名前空間内)またはConsole :: WriteLine()を使用して、Visual Studio 2012コンソールに出力を書き込むことができます。

テストのコード(System :: Diagnostics名前空間は他の場所で宣言されていることに注意してください)。 The Test

テスト結果ビュー。

enter image description here

「出力」リンクをクリックした後:

enter image description here

これはstd :: coutを使用していませんが、うまくいけば、これで必要なことが実行されます。

18
olen_garn

私にとっては使用するようです:

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

テストを実行した後、outputをクリックすると、Test Explorerウィンドウに出力が表示されます。

16
Hanan N.

私があなたに決定的な答えを与えることができるかわかりませんが、私は手掛かりを提供できるかもしれません。

カスタムビルドステップ中にコンソールウィンドウに出力を取得する必要があった以前のコードでは、次の行を使用しました。

_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++からの出力がビルド出力ウィンドウに表示されました。単体テストに役立つことを願っています。

マイクロソフトによれば、trxの接続とテスト結果は非推奨です

:(

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

1
n8CodeGuru