2008-10-07 114 views
6

可能重复:
Unit Testing C Code单元测试框架对于C

我见过专门针对C++的一些问题,但我真的很好奇C.我想在我们的构建环境中添加一个标准的单元测试框架。我的主要目标是鼓励我们的开发人员编写单元测试,并将这些测试标准化,以便其他人可以运行它们。理想情况下,我希望将这些单元测试作为我们每晚构建的一部分。

我们开始使用CUnit进行一些工作,除了一切都在一个线程中运行,并且任何内存故障导致单元测试停止运行,这非常烦人。我还发现编写测试非常困难,但这可能只是针对你的单元测试。

有没有人知道好的替代品?有没有人有C++单元测试人员使用C语言代码的经验?

+0

请参阅[这里] [1]为您的答案。 (Duplicate)[1]:http://stackoverflow.com/questions/65820/unit-testing-c-code – jjnguy 2008-10-07 04:45:12

回答

0

我们开始使用CUnit进行一些工作,除了一切都在一个线程中运行,并且任何内存故障导致单元测试停止运行,这相当恼人。

有一种C单元测试框架,叉等所有的测试都是即使在该核心转储测试存在执行在一个单独的过程执行每个测试用例: Check

然而,I”所有这些叉子带来的表现都会受到损害(并且说实话,我没有尝试过)。但我不会忍受任何单一的测试核心倾销:我通常会立即修复它。

一招,以防止单元测试核心是assertion guard,例如:使用的断言,以防止使用NULL指针(例如用minunit)。

void test_function_returning_a_pointer(void) 
{ 
    struct_t *theStruct = function_returning_a_pointer(); 
    MU_ASSERT(theStruct != NULL); 

    //--- now you can use the pointer 
    MU_ASSERT(theStruct->field1 == 0); 

    return MU_PASSED; 
} 

顺便说一下,我不知道任何C++单元测试框架,不会在分段违规的情况下崩溃。

我还发现编写测试非常困难,但这可能只是为您进行单元测试。

您能详细说明一下您的困难吗?您是否试图将遗留代码置于测试之下?

0

如果你的目标是Win32平台或NT内核模式,你应该看看cfix

1

我用C编写嵌入式软件,我决定写我自己的框架。这非常简单,并且为MS Visual Studio编写。它很容易移植到其他平台。

http://code.google.com/p/cunitwin32/

如果你的目标的linux我想检查可能会适合您的需求。

+0

P.S.它处理内存访问冲突等等(我也在自动化环境中使用它) – Dushara 2009-02-12 21:53:57