应要求写的比较简单的单元测试代码
#include <assert.h> #include <stdio.h> #include <stdlib.h> /* 作者:猪头 被测模块功能:编写一个累加整数数组元素的函数,并把累加结果作为函数返回值返回 被测模块参数:整数指针指向数组第一个元素;整数表示数组元素个数 参数异常:如果指针为空则应该返回-1 ,表示传入者参数有错误 */ /*被测模块*/ int sum(int *array,int length) { int index = 0; int sum = 0; if (array == NULL) { return sum; /*我故意埋下的BUG就是为了测试用例2失败 ,因为按照功能约定,应该返回-1*/ } for(index=0;index<length;index++) { sum += array[index]; } return sum; } /*测试用例,断言该数组传入应该输出6 否则认为该函数实现存在BUG*/ void testcase1() { int a[] = {1,2,3}; assert(sum(a,3) == 6); } /*测试用例,断言该数组指针是NULL时应该按照约定返回-1,否则认为函数实现存在BUG*/ void testcase2() { assert(sum(NULL,3) == -1); } int main(int argc, char *argv[]) { /*手工调用测试用例。在测试框架会自动调用*/ testcase1(); testcase2(); system("PAUSE"); return 0; }
该代码并未使用cppUnit这样的测试框架,因为我的环境没有这个东西,况且我觉得不用框架或许可以更清晰的表达单元测试的核心理念:定义接口功能以及输入输出,我们再调用之,看它是否能按照约定或者它声称的方式返回结果,而测试框架解决了什么问题呢:1自动调用测试用例。2为测试用例准备执行环境。3 用例代码复用(是的,测试用例的代码也需要DRY)。如有理解有误的欢迎留言指正,谢谢