即使测试失败,我可以使 google 测试 return 0 吗?

Can I make google test return 0 even when tests fail?

我在 VS 2012 中的 C++ 项目的 post-build 步骤中调用 googletest。

自然地,当任何测试失败时,googletest 命令 returns 失败 (-1),整个项目被标记为失败 Visual Studio。

我不想这样。我希望 googletest 为 运行,我希望在输出中看到结果,但如果不是所有测试都通过,我不想使项目失败。

有没有我可以传递给 googletest 的标志,以便它总是 returns 成功(零)?

是的,你可以return 0 如果你自己写main函数

我想你正在将你的测试可执行文件与特殊的 gtest_main 库链接起来,这是一个非常基本的帮助程序,可以让你避免编写自己的 main 函数。

几乎就是在做:

int main(int argc, char **argv) {
  printf("Running main() from gtest_main.cc\n");
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

RUN_ALL_TESTS 宏是 returning -1 的罪魁祸首,因此您需要做的就是停止与 gtest_main 的链接并编写您自己的 main 更像是:

int main(int argc, char **argv) {
  testing::InitGoogleTest(&argc, argv);
  RUN_ALL_TESTS();
  return 0;
}

有关此主题的详细信息,请参阅 the GoogleTest docs