Google 测试返回值

问题描述 投票:0回答:1

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

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

我尝试运行测试过滤来仅运行一个测试用例,其中没有触发 GMOCK 警告,并且仍然得到 1 作为返回值。

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

根据

RUN_ALL_TESTS
宏的文档和代码注释,返回值应该是0。

我想不出还有什么其他原因会导致返回值 1。我是否遗漏了什么?

c++ googletest googlemock
1个回答
7
投票

如果您查看 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 警告会发生什么(例如使用 NiceMock<> 之类的东西来包装您的模拟类实例)。

© www.soinside.com 2019 - 2024. All rights reserved.