C++ 谷歌测试使用

C++ 谷歌测试使用,c++,googletest,C++,Googletest,我想在我的项目中使用gtest/gmock进行TDD,但不知道如何使用。我想将每个类的测试拆分为一个单独的模块,但这不起作用,因为项目只能有一个main()函数 鉴于: “lib”项目,它生成一个lib。 “main”项目,它有我的应用程序的main()函数,它做有用的事情。 “test”项目,它链接到“lib”项目,我希望所有单元测试都在这个项目中 我的问题是“test”项目只能有一个main()函数,它运行所有测试,但我希望每个模块中都有一个main()函数。 例如,我的“lib”项目有Fo

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

鉴于: “lib”项目,它生成一个lib。 “main”项目,它有我的应用程序的main()函数,它做有用的事情。 “test”项目,它链接到“lib”项目,我希望所有单元测试都在这个项目中

我的问题是“test”项目只能有一个main()函数,它运行所有测试,但我希望每个模块中都有一个main()函数。 例如,我的“lib”项目有Foo和Bar类,我想独立测试这些类,在Foo_test.cc中测试Foo,在Bar_test.cc中测试Bar。据我所知,每个模块{foo_test.cc,bar_test.cc}都需要一个main()来运行它的测试,但是这个项目只能有一个main()函数

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


提前谢谢 />代码>函数。所以如果你 想要为每个类
Foo
Bar
,。。。你想测试的,然后你 必须为每个
Foo
Bar
。。。等等

Foo
的测试运行程序必须只编译类
Foo
的测试,因此您必须 将这些测试写入一个源文件或一组不同于测试源的源文件中 其他任何一类。类似地,类
等的测试运行程序

所有这些测试运行程序都将链接到包含
Foo
Bar
,。。。等。每个测试转轮的连杆将 不从库中提取它不需要的任何对象文件

然而,没有必要为类
Foo
和另一个类编写测试运行程序,这将是毫无意义的麻烦 一个用于
Bar
,依此类推,以独立运行
Foo
测试和
Bar
测试。 对于整个库的单个测试运行程序,只需使用
--gtest_filter=
命令行选项选择
Foo
测试,或
条形码
测试等读取
在手册中,

在C++程序中必须有一个完全正确的代码<主代码> />代码>函数。所以如果你 想要为每个类
Foo
Bar
,。。。你想测试的,然后你 必须为每个
Foo
Bar
。。。等等

Foo
的测试运行程序必须只编译类
Foo
的测试,因此您必须 将这些测试写入一个源文件或一组不同于测试源的源文件中 其他任何一类。类似地,类
等的测试运行程序

所有这些测试运行程序都将链接到包含
Foo
Bar
,。。。等。每个测试转轮的连杆将 不从库中提取它不需要的任何对象文件

然而,没有必要为类
Foo
和另一个类编写测试运行程序,这将是毫无意义的麻烦 一个用于
Bar
,依此类推,以独立运行
Foo
测试和
Bar
测试。 对于整个库的单个测试运行程序,只需使用
--gtest_filter=
命令行选项选择
Foo
测试,或
条形码
测试等读取
在手册中。

感谢您写下详细的评论。我假设测试需要链接并运行同一文件中的main()。显然,情况并非如此,任何main()都可以从所有链接的.cpp文件中运行所有测试。感谢您撰写详细的评论。我假设测试需要链接并运行同一文件中的main()。显然,情况并非如此,任何main()都可以从所有链接的.cpp文件中运行_ALL_TESTS()。