《测试驱动的嵌入式C语言开发》——2.4节单元测试也会崩溃

2.4 单元测试也会崩溃
运行测试还有一个可能结果,那就是崩溃。通常意义上讲,C不是一种安全的语言。C代码可能会不知道跑到哪里,再也不返回了。sprintf()就是一个危险的函数。如果你传入的缓冲太小,内存就会被破坏。这个错误也许会让整个系统马上崩溃。它也可能会在以后崩溃。这时的行为很难说。结果是,一个测试可能无声息地运行通过并结束,或者提前退出运行但看上去没有错误,也可能是“嘣”地一声崩溃。
当你发现一个无声的失败或者崩溃的测试时,可以让测试框架来帮你确认是什么地方出了错。有时,一个对产品代码的改动会导致一个从前通过的测试失败,甚至崩溃。所以在崩溃之前,你要知道到底是哪个测试失败了。
因为测试框架除了测试失败以外通常都保持安静,当测试崩溃时,你可能不会得到什么有用的输出。Unity和CppUTest都提供了一个命令行参数来让测试运行于“冗余模式”(-v)。使用了-v,每个TEST()在运行前都会先写出自己的名字。结果是,最后一个涉及的TEST()就是引起崩溃的原因。
你还可以过滤测试组(-g testgroup)和测试用例(-n testname)。这会让你精确地知道是哪个测试用例在运行。这些对于寻找崩溃原因很有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值