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

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

上一篇:先这样吧,感觉二维数组的计算比一维要费脑点,那三维,四维就更不必说了。。。。


下一篇:JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块