0

我从cmocka库开始了我的冒险,我有两个问题。

  1. 是否可以确定 free() 操作是否正确?我的意思是,我想测试清理树结构的功能。我读过有关 test_free() 的内容,但老实说,我不明白这背后的想法。

  2. 第二件事是捕获标准库异常的情况。我知道 function expect_assert_failure,但是如何使用它呢?例如,我想做一些会引发分段错误的事情,但我还是想通过测试。

4

2 回答 2

2

您需要添加

#define UNIT_TESTING 1

在包含cmocka.h头文件之前mallocrealloc和 free 会被覆盖,并会警告您内存泄漏。

expect_assert_failure()if 用于检查assert()条件是否真的被命中。

于 2015-07-03T10:22:40.133 回答
1

我建议只用 valgrind 做一个额外的测试。

valgrind --error-exitcode=1 ./test

如果没有选项 valgrind 将始终返回您的测试程序返回的相同退出代码。这样,如果您的测试程序成功,但 valgrind 的内存检查发现错误,它将返回 1 表示错误。

于 2015-06-05T16:09:46.007 回答