即使测试失败,我可以使 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。
我在 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。