就在几天前,我开始研究一个名为 check 的单元测试框架,并打算在 Linux 下在 c 代码上运行测试。
现在检查一下,一些设计良好的代码和一些测试代码可以帮助我验证基本功能是否正确,我的意思是很容易查看变量并返回响应,然后确定函数是否正确。
但是,假设我想测试一个动态内存结构,其中包含大量的 malloc 和 free,结果我可以将数据放入并再次取出正确的数据。但这并不能证明我在这个过程中没有破坏一些内存,假设我忘记释放一半的内存并丢失了指针(经典的 memleak)。该代码可能会通过大部分单元测试。
所以现在的问题是:用 ie Valgrind 运行整个单元测试代码并让他检测任何 malloc/free 问题是个好主意吗?(或者也许编译成电子围栏之类的东西?)
感觉是个好主意,但我不确定我要在这里做什么......
谢谢约翰
更新:感谢道格拉斯和乔纳森,这似乎是个好主意,我应该继续这样做:-)
更新: Valgrind 是一个有趣的工具,但是我发现这样做的第一个 memleaks 是在测试框架中,而不是我自己的代码(虽然很有趣)。因此,对其余部分的提示是在颠倒您自己的代码之前验证您正在使用的单元测试框架没有泄漏。在我的案例中,只需要一个空的测试用例,从那时起,除了单元测试框架之外什么都没有运行。