单元测试-mock技术基础
2013-12-13 15:44
417 查看
单元测试是在开发阶段由开发人员进行设计编写的测试,在不同的组织中单元测试与被测试代码实现先后顺序不同,有的组织采用先实现被测试代码,在编写测试代码,执行测试,有些组织采用先编写测试代码,执行测试,实现发生错误的被测试代码,再执行测试。 根据的区别就是组织内部是否在实践TDD开发方法。
在编写单元测试时,有几个方面需要考虑:
1、在测试一个方法时,如何构造被测试方法参数,如果参数类型比较简单那么比较容易构造,如果参数类型是复杂类型结构,并且存在多层结构,那么就需要多考虑考虑。
2、在被测试方法中,有外部服务的调用或者外部模块调用,调用结果影响测试结果,那么如何考虑进行隔离。 因为外部服务或者外部模块被调用方法的不同,针对每种调用方法都要相应的隔离技术,例如:
外部模块调用类在全局变量中被定义围静态变量
外部模块被调用类是通过参数对象传递给方法的
外部对象是一个全局静态对象,在被测试方法内直接调用
外部对象是在被测试方法中,new 出来的新实例,并在方法体内调用
外部模块是被隐式调用的,如被测试方法访问一个网络服务端口获取信息
等等
3、结果验证,单元测试要验证那些信息,按照方法结果体现形式的不同,有如下对象要验证:
直接返回值验证
间接对象验证 (如void 方法,它实现了对一个全局对象或内部私有对象实例的属性修改,那么要抓出对象实例并获得属性值验证结果)
日志文件输出
控制台信息输出
网络数据
如上要考虑的这些要考虑的方面,基本上都可以通过mock 进行处理。 mock 提供的是一种隔离技术,它提供如下几种隔离办法:
1、 完全隔离,mock整个被调用类方法
2、 部分隔离,mock部分被调用类方法
3、 服务桩隔离, 模拟被调用的服务。接受处理请求。
在基于java开发语言的项目上,可以使用PowerMock 作为Mock框架。
在编写单元测试时,有几个方面需要考虑:
1、在测试一个方法时,如何构造被测试方法参数,如果参数类型比较简单那么比较容易构造,如果参数类型是复杂类型结构,并且存在多层结构,那么就需要多考虑考虑。
2、在被测试方法中,有外部服务的调用或者外部模块调用,调用结果影响测试结果,那么如何考虑进行隔离。 因为外部服务或者外部模块被调用方法的不同,针对每种调用方法都要相应的隔离技术,例如:
外部模块调用类在全局变量中被定义围静态变量
外部模块被调用类是通过参数对象传递给方法的
外部对象是一个全局静态对象,在被测试方法内直接调用
外部对象是在被测试方法中,new 出来的新实例,并在方法体内调用
外部模块是被隐式调用的,如被测试方法访问一个网络服务端口获取信息
等等
3、结果验证,单元测试要验证那些信息,按照方法结果体现形式的不同,有如下对象要验证:
直接返回值验证
间接对象验证 (如void 方法,它实现了对一个全局对象或内部私有对象实例的属性修改,那么要抓出对象实例并获得属性值验证结果)
日志文件输出
控制台信息输出
网络数据
如上要考虑的这些要考虑的方面,基本上都可以通过mock 进行处理。 mock 提供的是一种隔离技术,它提供如下几种隔离办法:
1、 完全隔离,mock整个被调用类方法
2、 部分隔离,mock部分被调用类方法
3、 服务桩隔离, 模拟被调用的服务。接受处理请求。
在基于java开发语言的项目上,可以使用PowerMock 作为Mock框架。
相关文章推荐
- JustMock .NET单元测试利器(二)JustMock基础
- Mockito文档-单元测试技术
- 基于Mock对象和AOP技术进行Struts应用程序单元测试开发
- JustMock .NET单元测试利器(二)JustMock基础
- 【Android】——单元测试、JUnit4、Mockito、Dagger2等
- .NET4.0并行计算技术基础(6) 推荐
- [Web前端技术教学]图片与文字混排基础练习-2
- ECO技术的基础问题(我想要写的ECO技术文章,在这里先列一列)
- 一起谈.NET技术,asp.net控件开发基础(11)
- Elasticsearch技术解析与实战(一)基础概念及环境搭建
- 数据库技术基础之关系数据库
- 4.Web Service 技术基础
- 【自动化测试技术QTP基础系列五】---自动化概述
- 软件测试技术基础-笔记(未完成)
- 单元测试中使用Moq对EF的DbSet进行mock
- java核心技术-多线程基础
- 物联网技术核心和基础仍然是互联网技术
- Orchard: module开发基础技术知识
- 黑马程序员——iOS基础面试题(一)——黑马 ios 技术博客
- (转)用Mock Object进行独立单元测试(Testing in isolation with mock objects)