加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读