Google测试返回值

Ant*_*rez 0 c++ googletest googlemock

我正在使用Google Test和Google Mock框架进行项目的单元测试。我有各种单元测试项目,并且想要自动化我的构建,以便运行所有项目。

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

我尝试运行测试过滤以仅运行一个测试用例,在该用例中,不会触发GMOCK警告,并且返回值仍为1。

我有几个DISABLED测试用例,所以我将它们注释掉。仍然获得1作为返回值。

根据RUN_ALL_TESTS宏的文档和代码注释,返回值应为0。

我想不出会导致返回值1的任何其他内容。我是否缺少任何内容?

πάν*_*ῥεῖ 5

如果您查看RUN_ALL_TESTS()gtest.h中宏的定义,则可以清楚地指出,如果没有失败,则返回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())
Run Code Online (Sandbox Code Playgroud)

显然,甚至来自gmock的警告也可能导致返回值1。请尝试如果摆脱了gmock警告(例如,使用Nice.Mock <>之类的方法包装模拟类实例)会发生什么。