Java测试驱动开发 pdf

Java测试驱动开发

内容简介

《Java测试驱动开发》介绍如何将各种TDD俱佳实践应用于Java开发,主要内容包括:用Java语言进行TDD会用到的各种工具和框架,所需环境搭建;通过实际应用程序,展示TDD优点及开发中应注意的主要问题;TDD是如何通过模拟内部和外部依赖来提升速度的;如何重构既有应用程序;详细介绍所有TDD俱佳实践。

《Java测试驱动开发》适合所有Java开发人员,也适合用其他语言编程的程序员了解TDD。

作者简介

Viktor Farcic:资深软件架构师,Docker船长,Java开发专家,热衷于测试驱动开发、行为驱动开发、持续集成、持续交付和持续部署。他把多年经验都分享在了博客上,深受读者欢迎:http://TechnologyConversations.com。

Alex Garcia:资深Java程序员,敏捷实践拥趸,热衷于学习新语言、新范式、新框架。

目录

第1章为何要关心测试驱动开发1

1.1为何要使用TDD1

1.1.1理解TDD3

1.1.2红灯绿灯重构3

1.1.3速度是关键4

1.1.4TDD并非测试方法4

1.2测试5

1.2.1黑盒测试5

1.2.2白盒测试5

1.2.3质量检查和质量保证的差别6

1.2.4更好的测试6

1.3模拟7

1.4可执行的文档7

1.5无需调试9

1.6小结9

第2章工具、框架和环境10

2.1Git10

2.2虚拟机11

2.2.1Vagrant11

2.2.2Docker13

2.3构建工具14

2.4集成开发环境15

2.5单元测试框架16

2.5.1JUnit17

2.5.2TestNG19

2.6Hamcrest和AssertJ21

2.6.1Hamcrest21

2.6.2AssertJ22

2.7代码覆盖率工具23

2.8模拟框架24

2.8.1Mockito26

2.8.2EasyMock28

2.8.3PowerMock29

2.9用户界面测试29

2.9.1Web测试框架30

2.9.2Selenium30

2.9.3Selenide31

2.10行为驱动开发33

2.10.1JBehave33

2.10.2Cucumber35

2.11小结37

第3章红灯绿灯重构——从失败到

成功再到完美38

3.1使用Gradle和JUnit搭建环境39

3.2“红灯绿灯重构”过程41

3.2.1编写一个测试41

3.2.2运行所有测试并确认最后一个未通过41

3.2.3编写实现代码42

3.2.4运行所有测试42

3.2.5重构42

3.2.6重复43

3.3“井字游戏”的需求43

3.4开发“井字游戏”43

3.4.1需求144

3.4.2需求249

3.4.3需求352

3.4.4需求457

3.5代码覆盖率58

3.6更多练习59

3.7小结60

第4章单元测试——专注于当下而非

过往61

4.1单元测试61

4.1.1何为单元测试62

4.1.2为何要进行单元测试62

4.1.3代码重构62

4.1.4为何不只使用单元测试63

4.2TDD中的单元测试64

4.3TestNG64

4.3.1注解@Test64

4.3.2注解@BeforeSuite、@Be-foreTest、@BeforeGroups、@AfterGroups、@AfterTest和@AfterSuite65

4.3.3注解@BeforeClass和@AfterClass65

4.3.4注解@BeforeMethod和@AfterMethod66

4.3.5注解参数@Test(enable=false)66

4.3.6注解参数@Test(expected-Exceptions=SomeClass.class)66

4.3.7TestNG和JUnit差别小结66

4.4“遥控军舰”的需求66

4.5开发“遥控军舰”67

4.5.1创建项目67

4.5.2辅助类69

4.5.3需求169

4.5.4需求272

4.5.5需求374

4.5.6需求475

4.5.7需求577

4.5.8需求680

4.6小结81

第5章设计——难以测试说明设计

不佳82

5.1为何要关心设计82

5.2Connect484

5.3完成Connect4实现后再测试85

5.3.1需求185

5.3.2需求286

5.3.3需求387

5.3.4需求488

5.3.5需求589

5.3.6需求689

5.3.7需求790

5.3.8需求891

5.4使用TDD实现Connect492

5.4.1Hamcrest92

5.4.2需求193

5.4.3需求293

5.4.4需求396

5.4.5需求497

5.4.6需求599

5.4.7需求699

5.4.8需求7100

5.4.9需求8101

5.5小结103

第6章模拟——消除外部依赖104

6.1模拟104

6.1.1为何使用模拟对象105

6.1.2术语106

6.1.3模拟对象106

6.2Mockito107

6.3“井字游戏”第二版的需求107

6.4开发“井字游戏”第二版107

6.4.1需求1108

6.4.2需求2118

6.5集成测试124

6.5.1分离测试124

6.5.2集成测试125

6.6小结127

第7章BDD——与整个团队协作128

7.1不同规范128

7.1.1文档129

7.1.2供程序员使用的文档129

7.1.3供非程序员使用的文档130

7.2行为驱动开发130

7.2.1叙述131

7.2.2场景132

7.3书店应用程序的BDD故事133

7.4JBehave136

7.4.1JBehave运行器136

7.4.2待定步骤137

7.4.3Selenium和Selenide138

7.4.4JBehave步骤139

7.4.5最后的验证144

7.5小结146

第8章重构遗留代码——使其重焕

青春147

8.1遗留代码147

8.2编码套路156

8.2.1遗留代码处理套路157

8.2.2描述157

8.2.3技术说明157

8.2.4添加新功能157

8.2.5黑盒测试还是尖峰冲击测试157

8.2.6初步调查158

8.2.7应用遗留代码修改算法161

8.2.8提取并重写调用166

8.2.9消除状态的“基本类型偏执”坏味170

8.3小结173

第9章功能开关——将未完成的功能

部署到生成环境175

9.1持续集成、持续交付和持续部署175

9.2功能开关177

9.3功能开关示例178

9.3.1实现fibonacci服务181

9.3.2使用模版引擎184

9.4小结187

第10章综述188

10.1TDD概要188

10.2最佳实践189

10.2.1命名约定189

10.2.2流程191

10.2.3开发实践192

10.2.4工具195

10.3这只是开始196

10.4这并非终点196

感悟与笔记

测试驱动的精髓

再給系统添加新功能的时候,先写测试代码。(编写测试代码其实就是在问自己,添加这个功能需要做些什么 《重构,改善既有代码的设计》)

1.理解TDD

style="text-indent:2em;" TDD是一种简单的流程,要求你先编写测试,再实现代码。这与"编写代码后测试"的传统方法想反。

2.TDD开发历程

TDD的开发过程是“红灯”-“绿灯”-“重构”。这个过程是TDD重要的组成部分。

意思是在代码的周期状态:处于红灯状态时,代码不管用;处于绿灯时,一切代码都能像预期的那样工作,但并不是最佳的;到了重构阶段,我们知道了测试很好的覆盖了各项功能,就可以充满信心的去修改它,让它变得更好。

3.测试方法命名

给测试方法描述性的名称。这样做的好处之一是有助于理解测试的目标。

文中给出了测试方法命名的建议(BDD场景使用):given/when/then

例子:public void whenArrayOutSideThenException();

4.单元测试,功能测试(验收测试)以及集成测试

4.1 单元测试旨在对小型功能单位进行检查。在JAVA中,这些单元就是方法。对于所有外部依赖,注入对其他类,方法或数据库的调用等,都应在内存中完成,这是通过使用模拟对象,存根,间谍,伪造对象和哑元对象实现的。拉杰德发明了一个更通用的属于——测试替身,它涵盖了前述的各种对象。单元测试很简单,易于编写且运行速度很快,在测试中占据分量最大。

4.2 功能测试和验收测试的职责是核实整个应用程序像预期的那样工作。单元测试旨在检查代码内部质量,而功能测试用于确保系统在客户或用户看来能正常工作。其数量通常比单元测试少。

4.3 集成测试旨在核实各个单元,模块,应用程序乃至系统妥善的集成在一起。你可能有一个前端应用程序,它使用后端API,而后端API又与一个数据库通信。这种情况下,集成测试的职责是核实这三个不同的组件被紧密的集成在一起,能彼此通信。因此集成测试唯一的职责是确认所有组件能够很好的协同工作,所以其数量是最少的。

5.对单元进行测试时,不要过多考虑它将调用的方法或类

专注于一个单元,并尽量忽略其内部的工作原理。很多情况下,我们编写规范时都没有验证最终结果是否正确,而检查待实现的方法是否调用了辅助类的正确方法。在实际工作中,你将与小组成员协作开发项目,因此学会如何专注于分配给你的任务,并且相信他人的代码能够像预期那样工作至关重要。

会员免费下载

链接:https://pan.baidu.com/s/1PzjDEGqiyjy5ANdFk9n_Qw

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

Java测试技术

资源推荐

免费 图解数据结构:使用Java

C++ 程序设计语言:第4部分 标准库(原书第4版)

C++编程思想(两卷合订本)

CSS世界

JavaScript DOM编程艺术(第2版)

C++ Primer Plus(第6版) 中文版

Vue.js快速入门

Java编程思想(第4版) [thinking in java]

Copyright © 2021-2022 知识猫. All Rights Reserved.