测试C的框架

max*_*ins 4 c tdd unit-testing rspec

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

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

phi*_*ant 7

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

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

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

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

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

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

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