java面试题网

普通会员

96

帖子

7

回复

176

积分

楼主
发表于 2018-04-08 21:40:14 | 查看: 372| 回复: 0

TDD是指在编写真正的功能实现代码之前先写测试代码,然后根据需要重构实现代码。在JUnit的作者Kent Beck的大作《测试驱动开发:实战与模式解析》(Test-Driven Development: by Example)一书中有这么一段内容:“消除恐惧和不确定性是编写测试驱动代码的重要原因”。因为编写代码时的恐惧会让你小心试探,让你回避沟通,让你羞于得到反馈,让你变得焦躁不安,而TDD是消除恐惧、让Java开发者更加自信更加乐于沟通的重要手段。TDD会带来的好处可能不会马上呈现,但是你在某个时候一定会发现,这些好处包括:

- 更清晰的代码 — 只写需要的代码

- 更好的设计

- 更出色的灵活性 — 鼓励程序员面向接口编程

- 更快速的反馈 — 不会到系统上线时才知道bug的存在


补充:敏捷软件开发的概念已经有很多年了,而且也部分的改变了软件开发这个行业,TDD也是敏捷开发所倡导的。


TDD可以在多个层级上应用,包括单元测试(测试一个类中的代码)、集成测试(测试类之间的交互)、系统测试(测试运行的系统)和系统集成测试(测试运行的系统包括使用的第三方组件)。TDD的实施步骤是:红(失败测试)- 绿(通过测试) – 重构。

在使用TDD开发时,经常会遇到需要被测对象需要依赖其他子系统的情况,但是你希望将测试代码跟依赖项隔离,以保证测试代码仅仅针对当前被测对象或方法展开,这时候你需要的是测试替身。测试替身可以分为四类:

- 虚设替身:只传递但是不会使用到的对象,一般用于填充方法的参数列表

- 存根替身:总是返回相同的预设响应,其中可能包括一些虚设状态

- 伪装替身:可以取代真实版本的可用版本(比真实版本还是会差很多)

- 模拟替身:可以表示一系列期望值的对象,并且可以提供预设响应

Java世界中实现模拟替身的第三方工具非常多,包括EasyMock、Mockito、jMock等。



您需要登录后才可以回帖 登录 | 立即注册

java面试题网无聊看看网与java建站系统提供技术支持V2.1 网站地图 © 2016-2018