几天前,我开始研究一个名为check的单元测试框架, 并打算在Linux下运行c代码上的测试。
现在,check和一些精心设计的代码和一些测试代码可以帮助我验证基本功能是否正确,我的意思是只需查看输入和响应变量,然后决定函数是否正确就可以了。
但是假设我想要测试一个具有大量malloc和free的动态内存结构,并且结果表明我可以将数据放入并再次得到正确的数据。 但这并不能证明我没有在过程中破坏某些内存,例如我忘记释放一半内存并且失去指针 (经典的memleak)。那段代码可能会通过大部分单元测试。
所以现在的问题是:是否明智将整个单元测试代码与Valgrind一起运行来检测任何malloc/free问题?(或者可能是编译类似Electric Fence的东西?)
感觉这是个好主意,但我不确定我在这里会有什么结果.....
谢谢 Johan
更新: 感谢Douglas和Jonathan,看起来这是个好主意,我应该继续使用它:-)
更新: Valgrind是一个有趣的工具,但是我在尝试这样做时发现的第一个memleaks是在测试框架中而不是我的代码中(非常有趣)。因此,给其他人的建议是,在翻开你自己的代码之前,请验证您使用的单元测试框架是否有泄漏。在我这种情况下,只需要一个空测试用例,因为此后除了单元测试框架外没有任何东西在运行。
--xml=yes
和--xml-file=<file>
,这使得自动化读取结果变得轻松。 - Jeff Taylor