单元测试:局部静态变量处理
问题在白盒测试中单元测试时局部静态变量的处理问题有些函数会定义一些static类型变量函数被多次调用定义的静态变量满足一定条件时执行相应的动作如函数void time_cnt (void) { static int cnt0; if (0 cnt) { ... cnt; } else if (2 cnt) { ... cnt2; } ... }在做单元测试时就会面临问题cnt既不是全局变量也不是参数不能供我们直接赋初值来设计测试用例完成对函数的测试任务。有两种方案解决这个问题1、修改代码定义一个外部全局变量来达到对静态变量赋初值的目的。int global_cnt0; void time_cnt (void) { static int cntglobal_cnt; if (0 cnt) { ... cnt; } else if (2 cnt) { ... cnt2; } ... }2、插入用例初始化代码int i; for(i0;i10;i) { time_cnt(); }这样在执行正式的测试用例之前通过执行数次函数实现修改局部静态变量的目的。