Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 谷歌测试返回值_C++_Googletest_Googlemock - Fatal编程技术网

C++ 谷歌测试返回值

C++ 谷歌测试返回值,c++,googletest,googlemock,C++,Googletest,Googlemock,我正在使用GoogleTest和GoogleMock框架进行项目的单元测试。我有各种各样的单元测试项目,并希望自动化我的构建,以便运行所有这些项目 我希望单元测试可执行文件在成功时返回0,在任何测试失败时返回1(或任何其他值),但当所有测试都通过时,我得到1。我收到一些GMOCK警告,但找不到任何关于影响返回值的警告的文档 我试着运行测试筛选,只运行一个测试用例,其中没有触发GMOCK警告,但仍然得到1作为返回值 我有几个禁用的测试用例,所以我把它们注释掉了。仍然得到1作为返回值 根据RUN\u

我正在使用GoogleTest和GoogleMock框架进行项目的单元测试。我有各种各样的单元测试项目,并希望自动化我的构建,以便运行所有这些项目

我希望单元测试可执行文件在成功时返回0,在任何测试失败时返回1(或任何其他值),但当所有测试都通过时,我得到1。我收到一些GMOCK警告,但找不到任何关于影响返回值的警告的文档

我试着运行测试筛选,只运行一个测试用例,其中没有触发GMOCK警告,但仍然得到1作为返回值

我有几个禁用的测试用例,所以我把它们注释掉了。仍然得到1作为返回值

根据
RUN\u ALL\u TESTS
宏的文档和代码注释,返回值应为0


我想不出还有什么东西会导致返回值1。我遗漏了什么吗?

如果您查看gtest.h中的
RUN_ALL_TESTS()
宏的定义,就会清楚地表明在没有失败时返回0:

// Use this macro in main() to run all tests.  It returns 0 if all
// tests are successful, or 1 otherwise.
//
// RUN_ALL_TESTS() should be invoked after the command line has been
// parsed by InitGoogleTest().

#define RUN_ALL_TESTS()\
  (::testing::UnitTest::GetInstance()->Run())

很明显,即使是警告(来自gmock)也可能导致返回值为1。尝试一下,如果您消除了gmock警告(例如,使用s.th.like NiceMock包装您的模拟类实例),会发生什么情况。

BTW:我不是使用单元测试可执行文件的返回值来检查失败,而是扫描(XML)测试报告是否出现“故障”。我不希望Gmock警告会影响
RUN\u ALL\u TESTS()
的返回值。你得到了什么特别的警告?你能拿出一个小测试用例来演示这个问题吗?摆脱模拟警告并不是那么容易,因此我的问题是:)我对它进行了编辑以使它更清晰。