3

C++ 用の Google テスト フレームワークを使用しています。ドキュメントと例に従って、作成したすべてのテスト「.cc」ファイルに対して個別の実行可能ファイルを作成します。すべての単体テストを呼び出す単一の実行可能ファイルを作成する方法はありますか?

テスト ステータスをレポートする CI ツールにプロジェクトを配置したいので、多数の XML 入力ファイルではなく 1 つの XML 入力ファイルを使用したいと考えています。

私のメイクファイルの内容は次のようになります。

class1_unittest.o : $(USER_TEST_DIR)/class1_unittest.cc $(USER_DIR)/class1.h $(GTEST_HEADERS)
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_TEST_DIR)/class1_unittest.cc

class1_unittest : class1.o day.o class1_unittest.o gtest_main.a
     $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $(PROJECT_BIN)/$@

class2_unittest.o : $(USER_TEST_DIR)/class2_unittest.cc $(USER_DIR)/class2.h $(GTEST_HEADERS)
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_TEST_DIR)/class2_unittest.cc

class2_unittest : class2.o day.o class2_unittest.o gtest_main.a
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -pthread $^ -o $(PROJECT_BIN)/$@
4

1 に答える 1

2

Makefile の 1 つのターゲットにすべてのテスト ファイルを含め、テスト ファイルのmain()1 つまたは別の main.cc に を定義するだけで済みます。このファイルもターゲットに含める必要があります。

ドキュメントで説明されているように、マクロのさまざまなバージョンはTEST()暗黙的にテストを Google Test に登録します。これは、次のもののみを含むスタンドアロンの main.cc を持つことができることを意味します。

#include "gtest/gtest.h"
int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}
于 2012-05-10T22:32:51.123 に答える