12

Visual Studio 内で Google テストの結果を表示する方法はありますか? はいの場合、どのように?
Google Test 1.5.0 と Visual Studio 2010 を使用しています

これまで、コマンド ラインから Google Test を使用してきました。
私は他のIDE(eclipse ...)でそのような統合を見てきましたが、VSではまだ見ていません

4

6 に答える 6

7

GoogleTestAddinを見てください-私はそれがあなたが望むものだと思います。
CodePlexの説明からの引用:

GoogleTestAddinは、VisualStudio2008および2010用のアドインです。

それらを選択することにより、googletest関数の実行/デバッグが容易になります。

指定された関数またはテストのみを実行するために、テストアプリケーションのコマンド引数を設定する必要がなくなります。

googletestの出力はVisualStudioの出力ウィンドウにリダイレクトされます。失敗したテストでは、エラーメッセージをダブルクリックすることで、コードに簡単にジャンプできます。

于 2011-11-21T18:06:07.833 に答える
7

単体テストに googletest の出力を並列に使用する非常に簡単な方法があります。

簡単に言うと、結果を VisualStudio の出力ウィンドウに直接出力する独自の Printer クラスを作成できます。この方法は、結果のコンテンツ (形式、詳細など) と宛先の両方を制御できるため、他の方法よりも柔軟に見えます。関数内でそれを行うことができますmain()。一度に複数のプリンターを使用できます。また、失敗したテストのエラー メッセージをダブルクリックすると、コードにジャンプできます。

これを行う手順は次のとおりです。

  1. class から派生したクラスを作成します::testing::EmptyTestEventListener
  2. 必要な関数をオーバーライドします。OutputDebugString() ではなく関数を使用してくださいprintf()
  3. 呼び出しの前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で説明されています。

于 2012-03-19T09:06:50.410 に答える
5

Visual Studio 2012 には、Visual Studio で Google テスト用のテスト アダプターを提供する拡張機能もあります (したがって、Visual Studio テスト エクスプローラーと統合されます): Google テスト アダプター

于 2012-10-30T14:10:12.093 に答える
5

ビルド後のイベントを使用できます。ここにガイドがあります:
http://leefw.wordpress.com/2010/11/17/google-test-gtest-setup-with-microsoft-visual-studio-2008-c/

Visual Studio の [ツール] メニューで「外部ツール」を構成し、それを使用してプロジェクトのターゲット パスを実行することもできます。(ヒント: 呼び出しやすくするために、ツールバー メニュー項目を作成します)

于 2011-05-03T19:18:59.863 に答える
0

Visual Studio 2013 にはGoogleTest Runnerを使用してください。これは、Google Test Adapterの作成によって、より優れた代替手段として推奨されています。

于 2014-07-23T07:54:43.173 に答える