我目前正在开发一个代码库,它从来没有编写过任何单元测试。它是为16位嵌入式处理器编写的,我想至少为我编写的所有代码添加单元测试,然后将其扩展到代码的其他部分。
我的问题是,我发现应用程序级别上的每个模块(.c文件)似乎与项目中的其他C文件紧密耦合。对于任何给定的文件,这可能是从2-10文件向下的任何地方。
发布于 2010-06-28 22:31:54
关于#3 -确保它可以移植到PC上,下面是我使用的策略:
首先,遍历嵌入的代码,并将任何'int‘或'unsigned long’更改为'int16‘或'uint32’(或您选择的任何约定)。
将该节包装在嵌入的标头中,在其中定义条件内的类型:
#ifndef CORE_TYPE_DEFINITIONS
#define CORE_TYPE_DEFINITIONS
typedef long int16;
/*...*/
#endif创建一个"PC_Types.h“文件,为PC定义相同的类型。
#ifdef CORE_TYPE_DEFINITIONS
#error "Core Types already defined"
#else
#define CORE_TYPE_DEFINITIONS
typedef short int16;
/*...*/
#endif在PC项目中,为每个嵌入的c文件创建一个包装器,其中包含以下内容:
#include "PC_Types.h"
#include "ModuleX.c" //the file under test
#include "TestHarness.h" //verification functions
int TestModuleXUnit1(void)
{
/* setup */
/* call Unit1(); */
/* verify post-conditions */
return result;
}通过包装每个文件,您可以根据需要使用所有耦合函数。#将原始源文件包含在包装文件中,可以直接从源代码管理系统中删除对嵌入式代码的更新,而无需进行任何修改。在包含的源代码之后添加测试函数,可以让测试代码完全访问所有模块的函数,即使它们没有公共标头。
发布于 2010-06-28 07:14:39
我会从重读迈克尔·羽毛对遗产代码的有效运用开始。
https://stackoverflow.com/questions/3130612
复制相似问题