Cmocka:检查作为参数传递的结构

标签 c cmocka

假设我声明了一个名为 foo 的 C 结构,它有一个名为 bar 的 int 字段和一个名为 baz 的 char *。

我如何使用 Cmocka expect_check_expected 宏来检查传递的结构是否正确并且两个字段都具有预期值?如果文档中有示例,我错过了。


[更新] 也许我可以用expect_check() ?但是我找不到例子:-(

最佳答案

使用expect_memory(...)check_expected(...):

示例:

我假设您有一个正在测试的函数 fut,它调用一个子函数 subfunc。你的结构看起来像这样:

typedef struct foo_s {
  int bar;
  int baz;
} foo;

您的试驾功能可能如下所示:

void test(void **state) {
   foo myfoo = {
     .bar = 42,
     .baz = 13,
   };
   expect_memory(subfunc, param, &myfoo, sizeof(foo));

   fut();
}

子函数看起来像这样:

void subfunc(foo *param){
   check_expected(param);
}

关于Cmocka:检查作为参数传递的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286206/

相关文章:

使用动态计划计算 openmp for 循环中的迭代次数

c - 如何用cmocka处理静态元素?

用于编译测试的 CMake 和 CMocka 标准断言

c - 我如何与 cmocka 链接?

c - 了解管道/FIFO 是否已满

c - While 循环 - 改变字符串变量

c - 安装 cmocka 时如何处理 Mac OS X 上的 RPATH 问题?

c - c 中的包装函数

c - 数据结构 "stack"的结构变量的最终大小(通过结构实现并通过函数创建)

c - Malloc 基于现有文件的文件缓冲区大小