如何使用FILE *参数对C函数进行单元测试

时间:2013-03-23 21:29:29

标签: c unit-testing file-io

我有一个从uint8_t command_read(const FILE* const in)读取的C函数in。我想为函数编写一个单元测试。是否可以在内存中为测试创建FILE*,因为我希望避免与文件系统交互?如果没有,有哪些替代方案?

1 个答案:

答案 0 :(得分:9)

  

是否可以在内存中为测试创建FILE *?

不确定。写作:

char *buf;
size_t sz;
FILE *f = open_memstream(&buf, &sz);

// do stuff with `f`

fclose(f);
// here you can access the contents of `f` using `buf` and `sz`

free(buf); // when done

这是POSIX。 Docs.

阅读:

char buf[] = "Hello world! This is not a file, it just pretends to be one.";
FILE *f = fmemopen(buf, sizeof(buf), "r");
// read from `f`, then
fclose(f);

This is POSIX too.

<强>旁注:

  

我想避免测试必须与文件系统进行交互。

为什么?