【发布时间】:2009-12-14 03:56:50
【问题描述】:
我正在开发一个相当大的 C 库,现在没有任何测试。随着 API 开始最终确定,我想开始编写单元测试。
我的几乎所有函数都作用于第一个参数(结构)。
简单的单元测试方法是让pre函数调用结构处于已知状态,调用函数,然后将pre call结构与预期结果进行比较。
现在这适用于由标量类型组成的结构,但至于分配的内存,我想知道您使用的是哪种方法。
例如,想象一个图像结构,当你这样做时:
CreateImage(&img, x, y);
您希望 img->x 是 x,img->y 是 y,img->pixels 是指向足够大的东西以容纳 x * y * sizeof(pixel) 的指针。
检查前两个是微不足道的,但是 img->pixels 呢?我不是要检查 malloc 调用是否成功,因为我可以 overload malloc,但我想知道 malloc 是否被正确调用。
在这种情况下这一点尤其重要:
CreateImage(*img, x, y)
{
img->x = x; img->y = y;
/* do something, dhoo, that something is broken and modify x or y */
img->pixels = malloc(x * y * sizeof(pixel)); /* wrong allocation size */
if(!img->pixels) error("no memory");
}
我希望我的问题很清楚。
谢谢。
【问题讨论】:
-
你的 malloc 模拟版本应该能够告诉测试工具它被调用了什么。因此,您可以将其与应该发生的情况进行比较。
标签: c unit-testing memory-management malloc