Mock的基本概念和方法

本文介绍了Mock的基本概念和在单元测试中的应用,以文件操作为例,提出两种Mock方法。方案一是创建模拟文件并修改调用,方案二是利用编译预处理宏定义重定向函数调用。通过这两种方法,可以在不依赖真实环境的情况下测试代码。文章讨论了两种方案的优缺点,并指出存在更好的自动化Mock工具。
摘要由CSDN通过智能技术生成

本博客(http://blog.csdn.net/livelylittlefish )贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!

Content

0. 序言

1. 本文议题

2. 应该做什么?

3. 如何做?

3.1 方案一

(1) 建立模拟文件

(2) 修改业务逻辑中的调用

(3) 修改make文件

(4) 讨论

3.2 方案二

(1) 建立模拟文件

(2) 基本思想

(3) 修改make文件

(4) 讨论

(5) 该方案的变种

4. 小结

 

0. 序言

 

在软件开发中,我们不可避免的要调用一些外部或者系统级别的接口,然而,我们在测试时,也许这些接口或环境并不存在。比如在对我们自己的模块做单元测试时,发现自己的模块依赖的别的模块或接口还没有建立好,如何测试?

 

Mock概念应运而生,最开始在Java领域,后来各种语言或开发领域均引入该概念。

 

Mock实际上就是一种模拟和控制外部或者系统级别对象或接口的方法。因此,我们在做测试时,尤其是单元测试或覆盖测试时,不必与真实环境交互即可完成对自己的模块业务逻辑的测试,或许自己的模块需要依赖外部环境。

 

因此,我们可以总结

Mock的本质是:模拟(mock)你的(代码),来测我的(代码)

在这里,别人的(代码),或者与硬件相关的(代码),或者暂时未完成的(代码),统称为你的(代码)

 

关于单元测试,各种软件工程书籍,http://en.wikipedia.org/wiki/Unit_testing,及其链接有较详细的解释。

关于Mock对象,可参考《测试驱动开发-Test-Driven Development》第7笔记http://www.mockobjects.comhttp://en.wikipedia.org/wiki/Mock_object,等有较详细的解释。

 

1. 本文议题

 

在本文中,笔者将以文件操作为例,讲述基本的mock概念和方法。本例中,你的代码your_file.h/.c如下。

/*

 * your_file.h

 */

#ifndef _YOUR_FILE_H_

#define _YOUR_FILE_H_

 

#include

 

FILE* your_file_open(char *fname);

void your_file_close(FILE* fp);

 

#endif

Your_file.c是你的代码本来应该有的功能,如打开和关闭文件。

/*

 * your_file.c

 */

#include "your_file.h"

 

FILE* your_file_open(char *fname)

{

    FILE *fp = NULL;

 

    fp = fopen(fname, "r");

    if (fp == NULL)

    {

        printf("Fail to open file!/n");

        return 0;

    }

 

    printf("Succeed!/n");

    return fp;

}

 

void your_file_close(FILE* fp)

{

    fclose(fp);

}

首先,做如下假设:

(1) 由于某种原因,这个.c文件(your_file.c)还有问题;

(2) 或者,这个

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值