cmocka自由运行和捕获异常

cmocka free operation and catching exceptions

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

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

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

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

valgrind --error-exitcode=1 ./test

没有选项 valgrind 将始终 return 相同的退出代码 return 由您的测试程序编辑。这样,如果您的测试程序成功,但 valgrind 的内存检查显示错误,它将 return 1 指示错误。

您需要添加

#define UNIT_TESTING 1

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

expect_assert_failure() if 用于检查 assert() 条件是否确实满足。