83

Web サイトには文書化されておらず、人々はフレームワークのセットアップに問題を抱えているようです。サンプル プロジェクトのセットアップの段階的な紹介を誰かに見せてもらえますか?

4

6 に答える 6

109

(これらの手順により、テスト フレームワークがデバッグ構成で機能します。同じプロセスをリリース構成に適用するのは非常に簡単です。)

Google C++ テスト フレームワークを入手する

  1. 最新のgtest フレームワークをダウンロードする
  2. 解凍先C:\gtest

フレームワーク ライブラリを構築する

  1. C:\gtest\msvc\gtest.slnVisual Studio で開く
  2. 構成を「デバッグ」に設定します
  3. ビルド ソリューション

テスト プロジェクトの作成と構成

  1. 新しいソリューションを作成し、テンプレート Visual C++ > Win32 > Win32 コンソール アプリケーションを選択します。
  2. 新しく作成したプロジェクトを右クリックし、[プロパティ] を選択します。
  3. 構成をデバッグに変更します。
  4. 構成プロパティ > C/C++ > 一般 > 追加のインクルード ディレクトリ: 追加C:\gtest\include
  5. [構成プロパティ] > [C/C++] > [コード生成] > [ランタイム ライブラリ]: コードがランタイム DLL にリンクしている場合は、[マルチスレッド デバッグ DLL (/MDd)] を選択します。そうでない場合は、マルチスレッド デバッグ (/MTd) を選択します。
  6. [構成プロパティ] > [リンカー] > [一般] > [追加のライブラリ ディレクトリ]: gtestd.lib の場所に応じて、C:\gtest\msvc\gtest\Debugまたはを追加します。C:\gtest\msvc\gtest-md\Debug
  7. 構成プロパティ > リンカー > 入力 > 追加の依存関係: 追加gtestd.lib

すべてが機能することを確認する

  1. 関数を含むテスト プロジェクトで cpp を開きmain()ます。
  2. 次のコードを貼り付けます。

    #include "stdafx.h"  
    #include <iostream>
    
    #include "gtest/gtest.h"
    
    TEST(sample_test_case, sample_test)
    {
        EXPECT_EQ(1, 1);
    }
    
    int main(int argc, char** argv) 
    { 
        testing::InitGoogleTest(&argc, argv); 
        RUN_ALL_TESTS(); 
        std::getchar(); // keep console window open until Return keystroke
    }
    
  3. デバッグ > デバッグを開始

すべてがうまくいった場合、コンソール ウィンドウが表示され、単体テストの結果が表示されます。

于 2010-11-19T04:48:15.783 に答える
6

セットアップに関するビデオ チュートリアルを行いました: http://www.youtube.com/watch?v=mzSzwQOmMRs

于 2010-08-25T04:02:32.323 に答える
5

gtest をビルドしたら、これが私が行ったことです。

  1. \mypath\gtest-1.0.1\Debug (または Release) を Common Properties->Linker->General->Additional Library Directories に追加します。
  2. gtest.lib と gtest_main.lib を Common Properties->Linker->Input->Additional Dependencies に追加します。

その後、必要に応じて TEST または TEST_F を使用してテストを作成し、メイン関数と一緒にコンパイルします。

int main(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}
于 2009-02-10T12:36:00.677 に答える
5

テスト用に独自の main() を記述したくない場合は、gtest_main.lib で定義されている main() 関数を使用できますが、VS2012 で「エントリ ポイントを定義する必要があります」というリンカ エラーが発生します。テスト プロジェクトで、ProjectProperties->Linker->System->SubSystem を「Console」に設定します。これにより、VS2012 は強制的に「main()」というエントリ ポイントを検索し、gtest_main.lib でそれを見つけることができます (リンクしている場合)。ちゃんと入ります)。

于 2013-02-25T23:51:20.440 に答える
2

Microsoft Visual Studio では、ランタイム ライブラリの種類が正しく構成されていないと、リンク エラーが発生します。

VS 2005 (および 2008) は、デフォルトでマルチスレッド DLL またはマルチスレッド デバッグ DLL を使用します。ただし、Google Test ライブラリはデフォルトでマルチスレッドまたはマルチスレッド デバッグ ランタイムを使用します。

そのため、Google テスト ライブラリに適切なランタイム ライブラリ タイプを選択してください。(構成プロパティ -> コード生成 -> ランタイム ライブラリ)。

于 2009-07-14T07:01:56.120 に答える