应要求写的比较简单的单元测试代码
#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)。如有理解有误的欢迎留言指正,谢谢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述