【问题标题】:What do you use to unit test C code? [duplicate]你用什么来单元测试C代码? [复制]
【发布时间】:2010-10-04 08:48:40
【问题描述】:

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

但是,我仍然没有很好地对这段代码进行单元测试,我想知道 C 程序员使用什么工具来创建自动化测试来验证代码。

【问题讨论】:

标签: c unit-testing


【解决方案1】:

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

经过一段时间的工作,我真的很有信心。使用预处理器指令

#define MyFunction(iEntry) mock_MyFunction(iEntry)

你也可以切断你想要模拟的任何函数(甚至是基本的窗口函数,如 sizeof()、malloc() 等)。

在这一步之后,您只需创建模拟函数 (mock_MyFunction(iEntry)),将它们包含到您的项目中并模拟它们的行为。 首选方法是在调用它们应该返回之前设置它们一些值( will_return_always(mock_MyFunction, 5) )。而当这个函数被调用时,它总是返回值 5。

您也可以完全避免使用 C++ 语言并继续使用纯 C 语言。 不要知道CMocka的简单索引站点。您必须深入了解该站点和工具 API 才能找到您需要的东西.. :) 还可以查看this 获取使用 CMocka 的小教程...

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

【讨论】:

    【解决方案2】:

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

    Unity 是一个很好的纯 C 测试工具。它使用 ruby​​ 生成测试运行器。

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

    詹姆斯

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 哦,嘿,printf 也很有用! :P
      【解决方案4】:

      CUtest。它真的很整洁。小,不依赖生成器语言,速度快...有什么不喜欢的?

      【讨论】:

        【解决方案5】:

        我曾经有过这个问题并发现了CUnit。我只将它用于一个小项目,但看起来还不错。不像我习惯的 JUnit 或 NUnit 那样方便!对于 C++ 项目,我使用 cppunit,效果很好。

        【讨论】:

          【解决方案6】:

          您是在严格测试 C 代码,还是可以混入一些 C++?如果 C++ 没问题,cppunit 可能值得一试。如果您正在测试一个库,您可以简单地将您的库链接到您的单元测试应用程序。如果您正在测试一个应用程序,您可能必须创建一个库,然后将其链接到您的应用程序和单元测试应用程序。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-05
            • 1970-01-01
            • 2010-10-13
            • 2010-09-05
            • 1970-01-01
            • 2012-12-06
            • 1970-01-01
            相关资源
            最近更新 更多