Visual Studio 内で Google テストの結果を表示する方法はありますか? はいの場合、どのように?
Google Test 1.5.0 と Visual Studio 2010 を使用しています
これまで、コマンド ラインから Google Test を使用してきました。
私は他のIDE(eclipse ...)でそのような統合を見てきましたが、VSではまだ見ていません
Visual Studio 内で Google テストの結果を表示する方法はありますか? はいの場合、どのように?
Google Test 1.5.0 と Visual Studio 2010 を使用しています
これまで、コマンド ラインから Google Test を使用してきました。
私は他のIDE(eclipse ...)でそのような統合を見てきましたが、VSではまだ見ていません
GoogleTestAddinを見てください-私はそれがあなたが望むものだと思います。
CodePlexの説明からの引用:
GoogleTestAddinは、VisualStudio2008および2010用のアドインです。
それらを選択することにより、googletest関数の実行/デバッグが容易になります。
指定された関数またはテストのみを実行するために、テストアプリケーションのコマンド引数を設定する必要がなくなります。
googletestの出力はVisualStudioの出力ウィンドウにリダイレクトされます。失敗したテストでは、エラーメッセージをダブルクリックすることで、コードに簡単にジャンプできます。
単体テストに googletest の出力を並列に使用する非常に簡単な方法があります。
簡単に言うと、結果を VisualStudio の出力ウィンドウに直接出力する独自の Printer クラスを作成できます。この方法は、結果のコンテンツ (形式、詳細など) と宛先の両方を制御できるため、他の方法よりも柔軟に見えます。関数内でそれを行うことができますmain()
。一度に複数のプリンターを使用できます。また、失敗したテストのエラー メッセージをダブルクリックすると、コードにジャンプできます。
これを行う手順は次のとおりです。
::testing::EmptyTestEventListener
。OutputDebugString()
ではなく関数を使用してくださいprintf()
。RUN_ALL_TESTS()
に、クラスのインスタンスを作成し、それを gtest のリスナー リストにリンクします。Printer クラスは次のようになります。
// Provides alternative output mode which produces minimal amount of
// information about tests.
class TersePrinter : public EmptyTestEventListener {
void outDebugStringA (const char *format, ...)
{
va_list args;
va_start( args, format );
int len = _vscprintf( format, args ) + 1;
char *str = new char[len * sizeof(char)];
vsprintf(str, format, args );
OutputDebugStringA(str);
delete [] str;
}
// Called after all test activities have ended.
virtual void OnTestProgramEnd(const UnitTest& unit_test) {
outDebugStringA("TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED");
}
// Called before a test starts.
virtual void OnTestStart(const TestInfo& test_info) {
outDebugStringA(
"*** Test %s.%s starting.\n",
test_info.test_case_name(),
test_info.name());
}
// Called after a failed assertion or a SUCCEED() invocation.
virtual void OnTestPartResult(const TestPartResult& test_part_result) {
outDebugStringA(
"%s in %s:%d\n%s\n",
test_part_result.failed() ? "*** Failure" : "Success",
test_part_result.file_name(),
test_part_result.line_number(),
test_part_result.summary());
}
// Called after a test ends.
virtual void OnTestEnd(const TestInfo& test_info) {
outDebugStringA(
"*** Test %s.%s ending.\n",
test_info.test_case_name(),
test_info.name());
}
}; // class TersePrinter
プリンターをリスナーリストにリンクする:
UnitTest& unit_test = *UnitTest::GetInstance();
TestEventListeners& listeners = unit_test.listeners();
listeners.Append(new TersePrinter);
このアプローチは、Googletest サンプルのサンプル #9で説明されています。
Visual Studio 2012 には、Visual Studio で Google テスト用のテスト アダプターを提供する拡張機能もあります (したがって、Visual Studio テスト エクスプローラーと統合されます): Google テスト アダプター
ビルド後のイベントを使用できます。ここにガイドがあります:
http://leefw.wordpress.com/2010/11/17/google-test-gtest-setup-with-microsoft-visual-studio-2008-c/
Visual Studio の [ツール] メニューで「外部ツール」を構成し、それを使用してプロジェクトのターゲット パスを実行することもできます。(ヒント: 呼び出しやすくするために、ツールバー メニュー項目を作成します)
Visual Studio 2013 にはGoogleTest Runnerを使用してください。これは、Google Test Adapterの作成者によって、より優れた代替手段として推奨されています。