c – 如何gtest代码没有调用exit()
发布时间:2020-12-16 09:21:54 所属栏目:百科 来源:网络整理
导读:我想用Google Test测试这个功能: foo() { if(some_grave_error) exit(1); // do something} 如果foo调用std :: exit(),我希望我的测试失败.我该怎么做呢?它与EXPECT_EXIT的作用相反? 解决方法 你应该使foo()可测试: using fexit_callback = void(*)(int)
我想用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); } 神奇的是,你所有的麻烦都消失了: #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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |