如何修改c语言代码,使得gtest测试未调用exit()时仍能正常执行后续测试?

2026-04-16 19:003阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计193个文字,预计阅读时间需要1分钟。

如何修改c语言代码,使得gtest测试未调用exit()时仍能正常执行后续测试?

我想用Google Test测试这个功能:`foo()` { if(some_grave_error) exit(1); // do something } 如果`foo`调用std::exit(),我希望我的测试失败。我应该怎么做?它与EXPECT_EXIT的作用相反吗?你应该使`foo()`可测试:`foo()``

我想用Google Test测试这个功能:

foo() { if(some_grave_error) exit(1); // do something }

如果foo调用std :: exit(),我希望我的测试失败.我该怎么做呢?它与EXPECT_EXIT的作用相反?

你应该使foo()可测试:

using fexit_callback = void(*)(int); void foo(fexit_callback exit = &std::exit) { if(some_condition) exit(1); }

神奇的是,你所有的麻烦都消失了:

如何修改c语言代码,使得gtest测试未调用exit()时仍能正常执行后续测试?

#include <cstdlib> #include <cassert> using fexit_callback = void(*)(int); void foo(fexit_callback exit = &std::exit) { if(true) exit(1); } namespace mockup { int result = 0; void exit(int r) { result = r; } } int main() { foo(mockup::exit); assert(mockup::result == 1); }

本文共计193个文字,预计阅读时间需要1分钟。

如何修改c语言代码,使得gtest测试未调用exit()时仍能正常执行后续测试?

我想用Google Test测试这个功能:`foo()` { if(some_grave_error) exit(1); // do something } 如果`foo`调用std::exit(),我希望我的测试失败。我应该怎么做?它与EXPECT_EXIT的作用相反吗?你应该使`foo()`可测试:`foo()``

我想用Google Test测试这个功能:

foo() { if(some_grave_error) exit(1); // do something }

如果foo调用std :: exit(),我希望我的测试失败.我该怎么做呢?它与EXPECT_EXIT的作用相反?

你应该使foo()可测试:

using fexit_callback = void(*)(int); void foo(fexit_callback exit = &std::exit) { if(some_condition) exit(1); }

神奇的是,你所有的麻烦都消失了:

如何修改c语言代码,使得gtest测试未调用exit()时仍能正常执行后续测试?

#include <cstdlib> #include <cassert> using fexit_callback = void(*)(int); void foo(fexit_callback exit = &std::exit) { if(true) exit(1); } namespace mockup { int result = 0; void exit(int r) { result = r; } } int main() { foo(mockup::exit); assert(mockup::result == 1); }