2009-01-29 67 views
6

我是一名专业的网页开发人员,因此我习惯于使用非常高级的脚本语言和测试工具。我个人最近一直在与C一起工作,并为基于Unix的系统编写许多C程序来完成各种任务。然而,我仍然没有进入单元测试这个代码的良好沟槽,我想知道C程序员使用什么工具来创建自动化测试来验证代码。你用什么来单元测试C代码?

+0

另请参阅此问题:http://stackoverflow.com/questions/65820/unit-testing-c-code。 – MattK 2009-01-29 22:27:09

+0

这是我一直在寻找的问题,但搜索并没有真正找到它。谢谢! – Mitchell 2009-01-29 22:40:55

回答

1

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

1

我有这个问题一次,发现CUnit。我只用它来做一个小项目,但看起来没问题。几乎不像我习惯的JUnit或NUnit一样方便!对于C++项目,我使用cppunit,它工作得很好。

1

CUtest。它非常整齐。小,不依赖于生成器语言,快...不喜欢什么?

0

如果你只想要一个quick'n'dirty测试机制,看看ANSI C的

1

assert宏,一部分考虑使用CppUTest。它是用C++编写的,但隐藏了C++,因此C程序员可以忽略C++。

Unity是一个C-only测试线束,也很好。它使用红宝石来生成测试跑步者。

我会保持清楚CppUnit。它需要C++知识,每个测试都必须单独安装。

詹姆斯

1

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

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

#define MyFunction(iEntry) mock_MyFunction(iEntry) 

你也可以切断要模拟的任何功能(甚至基本的Windows功能与sizeof(),malloc()和等)。

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

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

我希望这可以帮助,有一个愉快的一天..:-)

相关问题