c++ - googletest:如何将所有测试包含在一个可执行文件中?

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

最佳答案

您只需要将所有测试文件包含在 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();
}

关于c++ - googletest:如何将所有测试包含在一个可执行文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535192/

相关文章:

c++ - 我怎样才能得到 QObject 的 child ?

c++ - 类类型作为参数和作为属性

c++ - 与 C++ 中带有引号的硬编码字符串进行比较

visual-studio-2013 - GoogleTest Runner Visual Studio 扩展的用户指南?

c++ - 有没有办法在变量中存储类型说明符?

c++ - PKCS5_PBKDF2_HMAC 盐与 iv

c++ - 在 Armadillo C++ 中为矩阵类型变量获取键盘输入

c++ - 如何定义 gtest ASSERT_ASSERT 宏

c++ - Gtest EXPECT_DEATH() 因 SIGABRT 而失败