首页 > 解决方案 > 是否可以在 C++ 项目中模拟外部 C 库函数?

问题描述

在我正在工作的 C++ 项目中,我必须使用 gTest/gMock 完成高代码覆盖率,但问题是我还必须使用外部 C 库(尤其是 net-snmp)。因为我经常使用那个库,而且据我所知,C 函数不能被嘲笑,我看不出我怎么能接近 90% 以上的行覆盖率。

例如,我的大部分代码是这样的:

int status = snmp_synch_response(ss, pdu, &response);
if (status == STAT_SUCCESS && response->errstat == SNMP_ERR_NOERROR)
{
    netsnmp_variable_list *vars = response->variables;
    if (var->type == ASN_OCTET_STR)
    {
        //...
    }
    else if (var->type == ASN_INTEGER)
    {
        //...
    }
    else
    {
        //...
    }
    
    //...
}

snmp_synch_response因为如果从未输入分支并且我的大部分代码都是这样,那么对库函数的调用在测试中永远不会成功。

我仍然是初学者,尤其是在编写测​​试方面,所以我不确定我是否在这里明显遗漏了什么?

标签: c++googlemock

解决方案


推荐阅读