C中结构初始化的单元测试

C中结构初始化的单元测试,c,testing,C,Testing,我想为数据结构初始化例程编写一个测试。例如: struct book_t { float price; int page_num; char title[100]; int hardcover:1; int on_sale:1; int language:3; } void init_book(struct book_t *b) { /* use memset or assign value to each field */ }; 对init_bo

我想为数据结构初始化例程编写一个测试。例如:

struct book_t
{
   float price;
   int page_num;
   char title[100];
   int hardcover:1;
   int on_sale:1;
   int language:3;
}

void init_book(struct book_t *b)
{
    /* use memset or assign value to each field */
};
对init_book()的测试将有助于防止开发人员在修改struct book_t时忘记更新init_book()。逐个检查字段值是没有帮助的,因为不会测试新字段


我正在考虑对这种情况使用某种布尔运算,但它不足以从填充中确定未初始化的字段。有更好的方法吗?

单元测试无法检查添加新字段


这应该通过代码审查来完成。

您可以考虑在init函数的末尾添加硬编码的结构大小验证,并在第一次运行

中声明谁添加了参数,并且没有更新与结构大小相比硬编码的大小。