你用什么单元测试C代码?

What do you use to unit test C code?

本问题已经有最佳答案,请猛点这里访问。

我是一名专业的Web开发人员,因此我习惯使用非常高级的脚本语言和测试工具。 我最近一直在用C语言工作,为基于unix的系统编写许多C程序来完成各种任务。

但是,我仍然没有进入单元测试此代码的良好沟槽,我想知道C程序员使用什么工具来创建自动化测试以验证代码。


我是开发人员,我更喜欢使用CMocka工具为C语言提供UnitTesting。
它是基于GTest的简单工具(主要是C ++单元测试),它非常容易理解。
前段时间我研究了最好和最简单的测试工具并决定了这一点。

经过一段时间的努力,我非常自信。使用预处理程序指令

1
#define MyFunction(iEntry) mock_MyFunction(iEntry)

你也可以截断你想要模拟的任何函数(甚至基本的windows函数,如sizeof(),malloc()等)。

完成此步骤后,您只需创建模拟函数(mock_MyFunction(iEntry)),将它们包含到项目中并模拟其行为。
首选方法是在调用它们之前设置它们一些值(will_return_always(mock_MyFunction,5))。当调用此函数时,它将始终返回值5。

此外,您可以完全避免使用C ++语言并继续使用纯C语言。
不要知道CMocka的简单索引站点。你必须深入到该网站和API工具,找到你需要的东西.. :)
还要查看这个有关使用CMocka的小教程...

我希望这会有所帮助,祝你有个美好的一天...... :-)


考虑使用CppUTest。它是用C ++编写的,但隐藏了C ++,以便C程序员可以忽略C ++。

Unity是一个仅限C的测试工具,也很好。它使用ruby生成测试运行器。

我要远离CppUnit。它需要C ++知识,每个测试都必须单独安装。

詹姆士


最可爱的。它真的很整洁。小,不依赖于生成器语言,快......什么不喜欢?


我有一次这个问题并发现了CUnit。我只把它用于一个小项目,但似乎没问题。虽然不像我以前那样方便JUnit或NUnit!对于C ++项目,我使用cppunit,效果很好。


您是在严格测试C代码,还是可以混合使用某些C ++?如果C ++没问题,cppunit可能值得一试。如果您正在测试库,则只需将库链接到单元测试应用程序即可。如果您正在测试应用程序,则可能需要创建一个库,然后将其链接到您的应用程序和单元测试应用程序中。


如果您只想要一个快速的测试机制,请查看assert宏,ANSI C的一部分。