遗留代码测试与初始化策略
1. 测试代码中的函数定义与初始化
在测试代码里,若 monitorLoop() 函数会在生产代码中使用一段时间,可将其放在头文件中,以确保签名与测试代码同步。以下是测试用例中 monitorLoop() 的定义:
extern "C"
{
#include "RtcTime.h"
static int lastMonitoredDays;
void monitorLoop(int days)
{
CHECK(lastMonitoredDays != days);
lastMonitoredDays = days;
}
}
为避免因 lastMonitoredDays 中的陈旧值导致测试间意外交互而产生潜在误报,需在 setup() 中重置该变量:
void setup()
{
lastMonitoredDays = -1;
}
运行此测试可跳出循环,避免测试框架像 Zune 那样挂起。
2. 两级结构体初始化
2.1 问题引入
当代码依赖公共数据结构时,会有独特的初始化问题。手动初始化或随意初始化的数据结构,会使测试中难以避免重复。例如,将数字视频录像机(DVR)集成到家庭自动化系统中,DVR 功能使用公共数据结构存储节目信息,其初始化分两步:先用 DvRecorder
超级会员免费看
订阅专栏 解锁全文
1208

被折叠的 条评论
为什么被折叠?



