测试C框架

在去年夏天与Ruby,Rails和RSpec合作之后,我学会了TATFT 。 现在我不能在没有先编写测试的情况下编写代码。

我明年将参加C语言的编程课程,我想学习写C测试驱动。 使用C进行TDD是一个好主意(甚至可能)吗? 如果是这样,有没有与C兼容的良好测试框架?

使用C进行TDD是一个好主意(甚至可能)吗?

是的,与其他语言一样,这显然是一个好主意。 但是,由于语言的程序性,它带来了一些更多的困难。

  • 静态function很快就会受阻。 这可以通过包含测试中的源文件,或者在编译生产代码时定义仅表示静态的STATIC宏来解决 – 而不是unit testing

    #if defined(UNIT_TEST) #define STATIC #else #define STATIC static #endif 
  • 没有孤立:只有一个全局背景。 使用OO语言,您可以实例化一个对象(或一组协作对象)来测试它们(它们),您也可以使用模拟对象。 但是,使用C,您可以通过在unit testing中重新定义函数来覆盖函数。 这在类似Unix的系统上工作正常,链接器调用他发现的第一个函数 – 我不确定在Windows上。

如果是这样,有没有与C兼容的良好测试框架?

你可以从minunit开始。 学习曲线是平坦的,因为它只有四个宏长。

编辑:有两个用于C语言的UT框架列表,在其他答案中提到,我没有重复: 一个在Wikepedia上 , 另一个在xprogramming.com上 。

我们使用来自http://check.sourceforge.net/的 “check”,它提供了测试套件和测试的基本function(类似于junit),但相当轻巧。 我喜欢的function是,如果您的测试转储代码并认为是失败,它会处理。

另请注意,“check”是基于“C”的框架而不是“C ++”框架。

我刚刚发现CSpec ,它在C中做BDD 。看起来不太成熟,但它让我想起了RSpec。

C有许多unit testing线束。维基百科有一个比我在这里组装的更好的列表。

如果您实际上使用的是C ++编译器,但是通过编译.c文件在“C”模式下使用它,那么,任何C ++unit testing框架都可以正常工作。

在http://www.xprogramming.com/software.htm上查看 xUnit框架的原始列表

这个类似的问题也有很多答案“unit testingC代码”

我使用RCUNIT ,它已经成熟并拥有我需要的一切。 我也使用了ipl canata,这很棒,但非常昂贵所以很可能不是你想要的。

你当然可以在C(我这样做)进行unit testing。 我使用的框架(对于Windows平台)是CunitWin32

以下是c的unit testing框架列表: http : //en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C

好好享受!

所以一个合适的C程序员会告诉你,因为C是静态类型的,它会捕获你可能拥有的所有错误,因此你不需要unit testing框架。

他们充满了狗屎,但这是像C这样的静态类型语言的论据。

我认为你应该采用Adobe用Photoshop做的方法。 用C编写一系列核心库,然后应用程序的所有粘合和实际逻辑应该是更高级的语言。 Photoshop主要用Lua编写,但许多语言都适用于此。