首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Googletest用法

Googletest用法
EN

Stack Overflow用户
提问于 2018-03-11 21:37:51
回答 1查看 287关注 0票数 0

我想在我的项目中使用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个测试项目不是一个选项。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-12 10:20:10

在一个main程序中必须有一个C++函数。所以如果你想为每个类FooBar,.您想要测试的话,您必须为每个FooBar,……编写一个单独的测试运行程序。等。

Foo的测试运行程序必须只编译类Foo的测试,因此必须将这些测试写入与任何其他类的测试源不同的源文件或源文件集合中。类似地,Bar类的测试运行程序等等.

所有这些测试运行程序都将链接到包含FooBar、.的实现的同一个库。等等,每个测试运行程序的链接都不会从它不需要的库中提取任何对象文件。

但是,没有必要为类Foo编写一个测试运行程序,为Bar编写另一个测试运行程序,等等,这样做将毫无意义地繁琐,从而独立地运行Foo测试和Bar测试。使用整个库的单个测试运行程序,只需使用--gtest_filter=<pattern>命令行选项来选择Foo测试或Bar测试等,在手册中读取运行测试的子集

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49225369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档