【发布时间】:2016-02-04 19:06:01
【问题描述】:
我有一组用于 TI 处理器的嵌入式 C,需要进行单元测试。
对于目标编译,使用了 IAR,但我正在使用 MinGW GCC 的 Win7 机器上运行测试。
在 C 代码中,有些函数包含有时需要在测试之间重置的状态机。这些状态机通常将其状态变量保持在本地静态,这使得该任务即使不是不可能也很困难。
我不是很精通 C++ 类,但我有一个想法,将 C 函数作为成员函数“导入”到包装 C++ 类中,这样就可以在需要重置时创建一个新对象。下面的代码不起作用,但它说明了我的想法。
在 main.cpp 中:
#include "statemachine.h"
using namespace std;
class stateMachineWrapper {
public:
extern void stateMachine(void);
};
int main() {
stateMachineWrapper myObject;
myObject.stateMachine();
myObject.stateMachine();
stateMachineWrapper myNewObject;
myNewObject.stateMachine();
myNewObject.stateMachine();
return 0;
}
在 statemachine.h 中:
void stateMachine(void);
在 statemachine.c 中:
#include <stdio.h>
void stateMachine(void)
{
static int myState = 0;
switch(myState)
{
case 0:
{
printf("Init State");
myState = 1;
break;
}
case 1:
{
printf("Second state");
break;
}
default:
{
printf("Default");
break;
}
}
}
不鼓励对 statemachine.c/.h 进行更改,因为它可以被视为“遗留”。
当然也欢迎任何其他解决方案!
【问题讨论】:
标签: c++ c unit-testing state-machine