我想在我的项目中使用gtest/gmock作为我的项目,但不知道如何使用。我希望将每个类的测试拆分到一个单独的模块中,但这是行不通的,因为项目只能有一个main()函数。
给定:“lib”项目,这会产生一个库。“main”项目,它具有我的应用程序的main()函数,它可以做一些有用的事情。“测试”项目,它链接到'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个测试项目不是一个选项。
提前感谢!
发布于 2018-03-12 10:20:10
在一个main程序中必须有一个C++函数。所以如果你想为每个类Foo,Bar,.您想要测试的话,您必须为每个Foo,Bar,……编写一个单独的测试运行程序。等。
类Foo的测试运行程序必须只编译类Foo的测试,因此必须将这些测试写入与任何其他类的测试源不同的源文件或源文件集合中。类似地,Bar类的测试运行程序等等.
所有这些测试运行程序都将链接到包含Foo、Bar、.的实现的同一个库。等等,每个测试运行程序的链接都不会从它不需要的库中提取任何对象文件。
但是,没有必要为类Foo编写一个测试运行程序,为Bar编写另一个测试运行程序,等等,这样做将毫无意义地繁琐,从而独立地运行Foo测试和Bar测试。使用整个库的单个测试运行程序,只需使用--gtest_filter=<pattern>命令行选项来选择Foo测试或Bar测试等,在手册中读取运行测试的子集。
https://stackoverflow.com/questions/49225369
复制相似问题