目前,我有一个test文件夹,每个测试都有多个源文件。在CMake上,我以前为每个源文件定义了一个二进制文件,但是我决定现在将它们合并成一个二进制文件,并使用GTest中的过滤器来选择我想要运行的测试。这些源文件都没有main()函数,但我想GTest框架只是在运行时隐式调用它。
因此,现在我创建了一个测试管理器源文件,它除了一个调用main()和RUN_ALL_TESTS()并包含所有测试源文件之外什么都没有。据谷歌( Google )称,这是“最后才能使用的黑客”。
那我应该怎么做呢?我是否真的应该去为我的每个测试源创建头文件,并在其中写入声明,然后在我的测试管理器源代码中包含所有这些头呢?有没有other...easier..。这么做的方法?
发布于 2015-05-07 12:54:43
不,你不需要对这些文件做什么特别的事.
所有的TEST_F和类似的宏都将链接在一起并运行。这是谷歌的魔法..。
实际上,您不需要这个带有main()的“测试管理器源”--只需使用googletest/googlemock发行版中的文件:
gmockxxx/src/gmock_main.cc
或
gtestxxx/src/gtest_main.cc
发布于 2015-05-07 13:23:39
将测试所需的所有源文件和头文件包含到一个项目中。您不需要包含一个“主”源文件,除非在gtest初始化之前需要一些特殊的设置。只需将您的测试项目与两个GTest库链接:
-lgtest -lgtest_main后一个gtest_main库包含基本的main()函数。
这是用GTest Primer:编写main()函数描述的
您可能会遇到这样的情况,即每个测试类都依赖于多个源文件(其他帮助类)。您希望将这些测试类保存在单独的可执行文件中,以便进行清洁测试,以确保每个类只使用所需的文件,而不依赖于其他测试类使用的文件。此解决方案还可减少编译时间。
在这种情况下,您必须创建自己的测试运行程序才能执行所有的测试可执行文件,并可能会打印其中哪些有错误。使用Bash或Python很容易做到这一点。
https://stackoverflow.com/questions/30100084
复制相似问题