首页 > 科技 >

嵌入式单元测试--框架解析

2018-06-29 19:07:23 网络整理 阅读:139 评论:0

嵌入式单元测试--框架解析

单元测试是软件开发的重要一环,尤其对嵌入式开发。因为嵌入式开发受限于开发环境、调试工具等因素,不能和纯PC软件开发一样使用很多先进的工具。这就需要开发者在开发过程中,进行更细的模块划分,更明确的接口,更详尽的测试。

传统的开发先出设计方案,然后跟着写出代码,最后在做测试---常被叫做bug调试,所以在代码“写完”之后,还有一半左右的开发量。人都会犯错,在设计和编码中也会犯错,如果后期调试编程去解决设计和编码中引入的错误,那么可能已经过了几天几周几个月,反馈如此只晚,已经不能从错误中吸取经验了,下次还会犯同样的错误。此外根据软件工程理论,1个bug越是在后期越是花费巨大的成本去修复,并且随着系统复杂度的增长,在一个大的系统中去查找某一个细节具体的问题,相比于在小的模块中去查找问题会花费多倍的时间成本。

一般地单元测试需要实现以下几个基本功能:

1. assert各种assert,比如AssertTrue、比如AssertFail、AssertStrEquals、AssertIntEquals......

条条大路通罗马,这些Assert有各种功能,其实就是包装了断言的函数。比如AssertStrEquals(str, "open"),进行str和字符串“open”的比较,如果不相同则会报错。

根据框架的结构,在assert失败时候,有的进行长跳转longjmp,有的对类似failCount的全局的变量进行加1并记录错误位置。

2. 错误位置记录

得益于C语言的LINE、FILE宏,这是2个ANSI C标志支持的内置宏定义,可以得到当前的的行数和文件名。 在断言失败的地方,记录文件名和行号,以供用户查询错误的位置。

char buf[HUGE_STRING_LEN];

sprintf(buf, "%s:%d: ", _FILE_, _LINE_);

相关文章