googletest:如何在一个可执行文件中包含我的所有测试?

时间:2012-05-10 13:37:57

标签: c++ googletest

我正在使用谷歌测试框架的C ++。根据文档和示例,我最终为我创建的每个测试“.cc”文件提供了一个单独的可执行文件。有没有办法创建一个可以调用我所有单元测试的可执行文件?

我想将我的项目放在一个报告测试状态的CI工具中,所以我希望有一个XML输入文件而不是很多。

我的make文件的内容如下所示:

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)/$@

1 个答案:

答案 0 :(得分:2)

您只需要将所有测试文件包含在Makefile中的单个目标中,并在其中一个测试文件中或在单独的main.cc中定义main(),这将需要包含在目标也是。

正如docs解释的那样,TEST()宏的各种版本会使用Google Test隐式注册其测试。这意味着您可以拥有一个独立的main.cc,它只包含:

#include "gtest/gtest.h"
int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}