谷歌测试使用

Googletest usage

我想为我的项目使用 gtest/gmock TDD,但不知道如何使用。我想将每个 类 的测试拆分到一个单独的模块中,但这不起作用,因为该项目只能有 1 个 main() 函数。

鉴于: 'lib' 项目,生成一个库。 'main' 项目,它具有我的应用程序的 main() 函数,可以执行有用的操作。 'test' 项目,链接到 'lib' 项目,我想在这个项目中进行所有单元测试。

我的问题是 'test' 项目只能有 1 个运行所有测试的 main() 函数,但我想在每个模块中有 1 个 main() 函数。 例如,我的 'lib' 项目有 类 Foo 和 Bar,我想独立测试这些 类,在 foo_test.cc 中测试 Foo,在 [=28] 中测试 Bar =].据我了解,每个模块 {foo_test.cc, bar_test.cc} 都需要有一个运行其测试的 main() ,但项目只能有 1 个 main() 函数。

如果我的假设有误,请告诉我。如果没有简单的方法来独立测试每个 类,我会感到惊讶。因为我有 ~20 类,创建 20 个测试项目不是一个选项。

提前致谢!

C++ 程序中必须只有一个 main 函数。所以如果你 想要为每个 class Foo, Bar,... 测试一个 gtest test-runner 然后你 必须为每个 FooBar、...等

编写一个单独的 test-runner 程序

class Foo 的 test-runner 必须只编译 class Foo 的测试,所以你必须 在与测试源不同的源文件或源文件集中编写这些测试 任何其他 classes。同样,test-runner 为 class Bar,等等

所有 这些测试 运行 人将 link 到包含 FooBar、...等的实施。每个测试的 link 年龄 运行ner 将 不要从不需要的库中提取任何目标文件。

但是 没有必要,为class Foo 和另一个写一个test-runner,这将是毫无意义的麻烦 一个用于 Bar,依此类推,运行 Foo 测试和 Bar 独立测试。 对整个库进行单个测试 运行ner,只需使用 --gtest_filter=<pattern> select Foo 测试的命令行选项,或者 Bar 测试等阅读 Running a Subset of the Tests 在手册中。