c - 在同一单元中测试文件期间,如何存根、包装或重新分配 C 函数?
问题描述
编译器:GCC 7.4(C 编译器)
单元测试框架:Cantata 6.2
我有一个正在测试的单元,其中函数采用这种一般形式:
void functionName(type *x, type y, type *result)
{
assert(NULL != result);
*result = OK;
if (NULL == x)
*result = NOT_OK;
if (OK == *result)
otherFunction(y, result);
if (OK == *result)
anotherFunction(y, result);
if (OK == *result)
yetAnotherFunction(y, result);
}
单元中所有函数的所有输入,以及许多单元级变量,理所当然地以各种方式进行测试。我现在有一个测试覆盖率问题,因为我无法在同一单元中存根由被测函数调用的函数,因此我无法强制result
调用被调用函数。这意味着其中一些(OK == *result)
谓词永远不会是假的。
你如何解决这个问题?
我尝试在测试脚本中重新分配内部函数:
anotherFunction = stubFunction;
这并不完全出乎意料,给了我这个编译错误:
error: lvalue required as left operand of assignment
解决方案
推荐阅读
- jhipster - Jhipster:为什么我看不到从 jdl 文件生成的元模型实体?
- python-3.x - 500 内部服务器错误“populate() 不可重入”
- android - 在 Worker 例程函数中等待 BroadcastReceiver 的返回值
- sql - 使用无序表优化删除 SQL 查询
- c# - 使用 URL 将图片从网站加载到 WPF 图像的问题
- c# - 来自存储过程的模型
- javascript - 获取特定周内某个日期的出现次数
- java - 询问用户特定的文件名
- protractor - 如何在量角器中找到全部通过、失败的测试用例?
- java - 是否可以在 JPA/Hibernate 中动态更改级联类型?