我的TDD实践---UnitTest单元测试
我的TDD实践---UnitTest单元测试
“我的TDD实践”系列之UnitTest单元测试
写在前面:
我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精的目的。
TDD实践系列文章:
1.TDD概念篇
2.CI持续集成
3.SVN架设篇
简介
1. 单元测试
1.1 定义:“单元测试”就是针对一个“工作单元”的测试,一般意义上来讲是针对一个基础类进行输入/输出测试。与之相关的是集成测试,验收测试等。这里指单纯意义上的“单元测试”。
1.2 特征:
与其他代码相隔离:单元测试只测试一件事,否则应该怀疑是否是测试内容有误。
与其他开发人员隔离:保证最小化的变量影响单元测试,也就是控制变量法。逐渐形成了模拟框架以及依赖注入框架等辅助工具。
有针对性:要做有意义的测试,保证完成那些功能或方法。
可重复:单元测试的最大优势就是可重复,这也是持续集成的意义所在。
可预测:单元测试保证的是---确定的输入得到肯定的输出。
2. 涵盖内容
2.1 单元测试框架(UnitTest):自从2005年TDD开始流行,框架和工具得到了迅猛的发展,这些框架允许定义测试代码,控制测试的执行,还提供了一个应用程序运行测试,并在成功完成测试套件中的每个测试后给出报告。
2.2 模拟框架(Mock):为了仅测试一个方法而不对其他发展产生影响或者被影响,产生了Mock框架。通过模拟另一个类的代码来完成单元测试,同时又充分的隔离了另一个类的部分信息。
2.3 注入框架(inject):为了充分隔离类内部使用的对象,一般采用构造注入的方式或者属性注入的方式,都是将外部初始化好的对象导入进测试类,以进行隔离。
3. 工具比较
3.1 单元测试工具:
3.1.1 NUnit:目前.net最流行的工具,由JUnit发展而来,简单易用。 官方网站
3.1.2 MSTest: 也十分的强大,同时也被多种自动编译工具所支持,在VS2010中十分方便创建以及关联测试测试类,使用方便。
这是两个比较主要的测试框架,NUnit更新比较慢,但是开源。两种工具语法标签上大同小异,也都支持“Setup”和“Teardown”方便初始化共享对象。
3.2 模拟框架:
3.2.1 Rhino Mock:免费,使用简单,功能强大。
3.2.2 Type Mock:使用中间语言(IL)在运行时以模拟实现来代替实际实现。商业产品。模拟对象不需要从接口集成,可以模仿第三方类库。
3.2.3 Moq:社区支持,功能强大,使用简单。Moq利用了lambda表达式。语法更具描述性。
3.3 注入框架:
3.3.1 Structure Map:开源容器框架,能够自动模拟容器。
3.3.2 Unity:来自微软设计与实践群组。
3.3.3 Autofac:允许不采用XML文件的情况下进行配置。
版权声明:凡是没有标注[转载]的,在引用文章时,均要加上本博客地址http://www.cnblogs.com/cuiyansong/。
我的TDD实践---UnitTest单元测试的更多相关文章
- 我的TDD实践---TDD概念篇
“我的TDD实践”系列之TDD概念篇 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...
- 我的TDD实践---CI持续集成
“我的TDD实践”系列之CI持续集成 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭建,做到简单实践先行,后理论专精 ...
- Node.js的UnitTest单元测试
body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; } 在专业化的软件开发过程中,无论什么平台语言,现在都需要UnitTes ...
- TDD中的单元测试
TDD中的单元测试写多少才够? 测试驱动开发(TDD)已经是耳熟能详的名词,既然是测试驱动,那么测试用例代码就要写在开发代码的前面.但是如何写测试用例?写多少测试用例才够?我想大家在实际的操作过程 ...
- 我的TDD实践---SVN架设篇
我的TDD实践---SVN架设篇 “我的TDD实践”系列之SVN架设 写在前面: 我的TDD实践这几篇文章主要是围绕测试驱动开发所展开的,其中涵盖了一小部分测试理论,更多的则是关注工具的使用及环境的搭 ...
- unittest单元测试框架总结
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- unittest单元测试框架详解
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- unittest单元测试框架
unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...
随机推荐
- 浏览器扩展系列————异步可插入协议(pluggable protocol)的实现
原文:浏览器扩展系列----异步可插入协议(pluggable protocol)的实现 IE中有很多我们比较熟悉的协议,如http,https,mailto,ftp等.当然你也可以实现自己定义的协议 ...
- cocos2d-x3.0之请求网络(phpserver)
HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos ...
- 开源 java CMS - FreeCMS2.2 模型管理
项目地址:http://www.freeteam.cn/ 模型管理 从FreeCMS 2.0開始支持 通过模型添加删除字段,调整后台功能;支持网站.栏目.信息等模型. 因为操作方法同样.本文档以网站模 ...
- 关于Java中List对象的分页思想,按10个或者n个数对list进行分组
try { List<String> timelist = DateUtils.getDateListBySETime("2015-08-01", "2015 ...
- CSS下背景属性background的使用方法
背景颜色(background-color) CSS可以用纯色来作为背景,也可以将背景设置为透明,background相当于xhtml中的bgcolor. 它的两个值: transparent(默认值 ...
- sql分页查询公式
分页查询公式: select top PageRow(每页显示的数据行数) from 表名 where 主键 not in(select top PageRow*(当前页数-1) 主键 from ...
- Installshield设置feature为必须选中状态,即必定安装状态
原文:Installshield设置feature为必须选中状态,即必定安装状态 上一篇: 解决卸载时残留目标文件夹的问题Installation Designer --> Organizati ...
- EA强大的绘图工具---设计数据库表格
关于EA这个优秀的软件是从师哥哪里听来的,自己瞎点了点,感觉也没什么.近期和和智福加上一个师哥合作敲机房收费系统时,想到之前听人说EA非常强大,便随便找了找关于EA使用的帮助手冊.果然惊喜-- 如题, ...
- SQL点滴14—编辑数据
原文:SQL点滴14-编辑数据 数据库中的数据编辑是我们遇到的最频繁的工作,这一个随笔中我来总结一下最常用的数据编辑. select into 经常遇到一种情况是,我们希望创建一个新表,表中的数据来源 ...
- D3D 光照和材料 小样例
1.实现一个旋转的圆柱体,体现d3d光照效果 2.程序实现 #pragma once #pragma comment(lib,"winmm.lib") #pragma commen ...