易截截图软件、单文件、免安装、纯绿色、仅160KB

C/C++单元测试理论精要(七)

2.2 解决可测性问题
    上一节具体分析了可测性问题,接下来,我们来看看如何解决这些问题。下图中,彩色的部分是需要解决的可测性的具体的问题。
   
与其他代码隔离
    为了提高效率,应该一次性将一位工程师负责的测试任务隔离出来。隔离时,应把源文件分为三类:被测文件,外围文件,其他文件。被测文件是测试目标,外围文件是指与被测文件关联密切的底层或相关文件,这些在测试时最好直接调用实际代码,减少打桩造成的失真,其他文件则完全隔离。
   
    
    
    上图是隔离测试任务的示意界面,只要将要测试的文件设为T,不需要测试或者是别的工程师负责测试,但可能需要实际调用的文件设N。其他文件是缺省的X,工具会视需要自动打桩。这样就将测试任务一次性隔离出来了,现在,不管原来的项目多大,测试任务都可以独立编译运行。
解决编译差异和平台差异
    跨平台单元测试,例如在PC上测试嵌入式项目,或在windows上测试Linux项目,由于编译环境可能不同,代码中通常会出现一些非标准的特殊关键字,以及数据长度可能不同。这些差异可以用工具自动解决。
   
    上图是解决编译差异和平台差异的示意界面。工具可以自动屏蔽特殊关键字或代码片断,也可以转定义关键字来解决数据长度差异。这样,在不修改产品代码的前提下,可以比较便利地解决编译差异和平台差异。
“可编程的桩”不能解决内部输入
    也许很多人都会认为,编写桩代码可以解决内部输入问题,内部输入有六种情形,我们来具体分析一下。
   
    自然输入:自然输入调用实际代码,是不需要特别解决的,跟桩无关。
    不可控:不可控调用的也是实际代码,不是调用桩代码,因此也不能解决。也许有人会问,另外编写桩代码来代替实际代码行不行?在应该调用实际代码的时候,要想调用桩代码可能是很麻烦的,例如,底层函数位于同一个文件,或同一个类,如何去调用桩?
    难于初始化:也是调用实际代码。
    静态输入:静态输入只涉及到局部静态变量,没有调用底层函数,当然也不能用桩来代替。
    中断输入:中断输入在不确定位置,中断调用不确定的代


相关文档:

我的第一個C程式

時間不等人,在我還未老去之前,想把丟掉的C程式重新再揀起來。
入門,建議(我也是新手)不要看譚大爺的書,對于20世紀學習C語言,c Primer Plus 5th我認為是一個好的選擇。
我的第一& ......

C/C++修改文本文件

mmap是linux下的CreateFileMapping,用来映射并同步文件。
这样的话,比如我自定义一种文件格式,把它写入到文件中,现在想修改其中的值,就可以用这个函数,把文件映射到内存中
然后用操作数组的方式,来进行文件的同步。如果不用这个函数就得:
1、定义一个结构体
2、定义结构体数组
3、读取文件(w+)
4、修改文件 ......

自己整理的关于C的一些字符串处理函数

鉴于在用C语言写一些字符串处理的程序时种种的不便,本人坚信"磨刀不误砍柴功"这个信条,于是在专门
进行了一次磨对C语言的磨刀,写了一些字符串的处理函数, 方便网友使用, 大家有好的解决方法也请告知一下.
    我估计有一些C的库中肯定有比我这更好的函数, 但是本人没有找到, 望"行家"告知.
#include <string.h> ......

c/c++ 静态变量 一个实例

#include <iostream>
#include <cstdlib>
using namespace std;
class Foo
{
public:
Foo(int ii):i(ii){}
int getInt(){return i;}
private:
int i;
};
class Bar
{
public:
static int FooVal(){c++; return f.getInt();}
int callsFooVal(){return c;}
private:
s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号