C编程和TDD

hel*_*hod 29 c tdd

测试驱动开发仅限于OO吗?或者将它与过程语言结合使用是否可行/有用?我必须在接下来的几个星期内在C开始一个更大的项目,我正在考虑如何发展.

Ode*_*ded 39

TDD是一种设计范例,因此不依赖于任何特定的编程范例.

简单地说,在编写代码之前,先为代码编写测试.

请参阅幻灯片关于TDD with C(保龄球游戏卡塔).

  • 3行答案,其中最后一行指向122张幻灯片.我喜欢. (5认同)

Dan*_*ory 8

测试驱动开发只是意味着您首先从测试模式开始编写代码,然后构建功能直到它通过测试.这同样适用于任何编程范例:结构化/程序化,面向对象,功能性 - 可以测试任何可以输入和输出的内容.


Nat*_*ate 7

查看James Grenning的书"嵌入式C的测试驱动开发".在其中,他提供了有关如何使用两个TDD框架(UnityCppUTest)来测试C的有意义的示例.


Edd*_*onk 6

我认为TDD根本不限于OO.

试试Unity&CMock框架.

来自他们wiki的一个例子:

void test_ShowSomeSillyExamples(void)
  {
    TEST_ASSERT_NOT_EQUAL(0, -1);
    TEST_ASSERT_EQUAL_INT(1, 1);
    TEST_ASSERT_EQUAL_HEX16(0x1234, 0x1234);
    TEST_ASSERT_EQUAL_STRING("These Are The Same", "These Are The Same");
    TEST_ASSERT_BITS(0x1111, 0x5555, 0x7175);
    TEST_ASSERT_INT_WITHIN(5, 100, 102);
  }
Run Code Online (Sandbox Code Playgroud)

请参阅:http://sourceforge.net/apps/trac/embunity/wiki

一本书:

http://www.pragprog.com/titles/jgade/test-driven-development-for-embedded-c

关于这个东西的雅虎小组:

http://tech.groups.yahoo.com/group/AgileEmbedded/

如果你在C中做TDD,你需要用C编写测试吗?我可能会用C语言编写生产代码,使用Google的gtest编写C++测试.


Jør*_*ogh 5

正如其他人所指出的,TDD本身并不依赖于OOP.但是,在实践中,它与模块化有关.每个单元测试应该只测试程序的一个非常有限的部分,所以如果你有很多全局状态,几乎不可能对程序进行单元测试.

绝对可以用C编写模块化程序,但它需要不同的技术.TDD可能会强迫您编写模块化程序,但如果您不习惯编写模块化C程序,它也可能会使您的开发工作停滞不前.