C/C++单元测试理论精要(七)
2.2 解决可测性问题
上一节具体分析了可测性问题,接下来,我们来看看如何解决这些问题。下图中,彩色的部分是需要解决的可测性的具体的问题。
与其他代码隔离
为了提高效率,应该一次性将一位工程师负责的测试任务隔离出来。隔离时,应把源文件分为三类:被测文件,外围文件,其他文件。被测文件是测试目标,外围文件是指与被测文件关联密切的底层或相关文件,这些在测试时最好直接调用实际代码,减少打桩造成的失真,其他文件则完全隔离。
上图是隔离测试任务的示意界面,只要将要测试的文件设为T,不需要测试或者是别的工程师负责测试,但可能需要实际调用的文件设N。其他文件是缺省的X,工具会视需要自动打桩。这样就将测试任务一次性隔离出来了,现在,不管原来的项目多大,测试任务都可以独立编译运行。
解决编译差异和平台差异
跨平台单元测试,例如在PC上测试嵌入式项目,或在windows上测试Linux项目,由于编译环境可能不同,代码中通常会出现一些非标准的特殊关键字,以及数据长度可能不同。这些差异可以用工具自动解决。
上图是解决编译差异和平台差异的示意界面。工具可以自动屏蔽特殊关键字或代码片断,也可以转定义关键字来解决数据长度差异。这样,在不修改产品代码的前提下,可以比较便利地解决编译差异和平台差异。
“可编程的桩”不能解决内部输入
也许很多人都会认为,编写桩代码可以解决内部输入问题,内部输入有六种情形,我们来具体分析一下。
自然输入:自然输入调用实际代码,是不需要特别解决的,跟桩无关。
不可控:不可控调用的也是实际代码,不是调用桩代码,因此也不能解决。也许有人会问,另外编写桩代码来代替实际代码行不行?在应该调用实际代码的时候,要想调用桩代码可能是很麻烦的,例如,底层函数位于同一个文件,或同一个类,如何去调用桩?
难于初始化:也是调用实际代码。
静态输入:静态输入只涉及到局部静态变量,没有调用底层函数,当然也不能用桩来代替。
中断输入:中断输入在不确定位置,中断调用不确定的代
相关文档:
時間不等人,在我還未老去之前,想把丟掉的C程式重新再揀起來。
入門,建議(我也是新手)不要看譚大爺的書,對于20世紀學習C語言,c Primer Plus 5th我認為是一個好的選擇。
我的第一& ......
题目:编写一个程序,用于处理c/c++源程序,将源程序中的注释部分去掉
输入:c/c++文件名
输出:处理后的程序源文件
程序伪代码如下:
c1,c2:char
tag:int
a:读入一个字符存入c1
if tag==0 //读入字符不是注释
if c1=='/' //可能是注释标记
读入一个字符存入c2
&nbs ......
在FC8中默认安装的有mysql,没有的话可以很方便的安装下。
默认的mysql的include文件目录在/usr/include/mysql
默认的mysql的lib文件夹在/usr/lib/mysql
这两个目录在我们编译时候需要到。
我的测试用的C代码为:
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#define CONN_HOST ......
I2C是Phillips开发的2线的串行总线协议。通常应用在嵌入式系统中让不同的组件通信,PC主板可以通过I2C来与不同的传感器通信。这些传感器通常报告风扇速度,处理器温度和整个硬件系统的信息,这个协议也可以用在RAM chips上,向操作系统提供DIMM的信息。
在2.0时I2C的kernel源码不在内核里的,2.4内核包括了一点对I2C的支持 ......