当前位置:首页 > 工业技术
JUnit实战  原书第2版
JUnit实战  原书第2版

JUnit实战 原书第2版PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:(美)塔凯文;(美)莱蒙,(美)马索尔等著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115274755
  • 页数:442 页
图书介绍:本书主要介绍了在Java软件开发中使用JUnit进行测试的原则、技巧与实践,深入阐述如何编写自动测试,把一段代码隔离开来测试有什么好处,如何判断何时需要进行整合测试,并对如何测试完整的J2EE应用进行了极具价值的讨论。
《JUnit实战 原书第2版》目录
标签:尔等 实战

第1部分 认识JUnit 3

第1章JUnit起步 3

1.1证实它能运行 4

1.2从零开始 6

1.3理解单元测试框架 8

1.4 JUnit的设计目标 9

1.5安装JUnit 9

1.6使用JUnit测试 10

1.7小结 13

第2章 探索JUnit的核心 14

2.1探索JUnit核心 15

2.2运行参数化测试 17

2.3 JUnit的测试运行器 18

2.3.1测试运行器简介 18

2.3.2 JUnitCore facade 19

2.3.3自定义测试运行器 20

2.4用Suite来组合测试 20

2.4.1组合一组测试类 20

2.4.2组合一组测试集 21

2.4.3 Suite、IDE、Ant与Maven 22

2.5小结 23

第3章 掌握JUnit 24

3.1引入controller组件 24

3.1.1设计接口 25

3.1.2实现基类 27

3.2让我们来测试它 29

3.2.1测试DefaultController 29

3.2.2添加一个处理器 30

3.2.3请求处理 33

3.2.4改进testProcessRequest 37

3.3测试异常处理 38

3.3.1模拟异常条件 39

3.3.2测试异常 42

3.4超时测试 43

3.5引入Hamcrest匹配器 45

3.6创建测试项目 48

3.7小结 49

第4章 软件测试原则 50

4.1单元测试的必要性 51

4.1.1带来更高的测试覆盖率 51

4.1.2提高团队效率 51

4.1.3监测衰退和减少调试 51

4.1.4自信地重构 52

4.1.5改进实现 52

4.1.6将预期的行为文档化 53

4.1.7启用代码覆盖率以及其他指标 53

4.2测试类型 54

4.2.1软件测试的4种类型 54

4.2.2单元测试的3种类型 57

4.3黑盒测试与白盒测试 58

4.4小结 60

第2部分 不同的测试策略 63

第5章 测试覆盖率与开发 63

5.1测量测试覆盖率 63

5.1.1测试覆盖率简介 64

5.1.2 Cobertura简介 64

5.1.3生成测试覆盖率报告 66

5.1.4结合黑盒与白盒测试 67

5.2编写可测试的代码 68

5.2.1公共API是协议 68

5.2.2减少依赖关系 68

5.2.3创建简单的构造函数 69

5.2.4遵循最少知识原则 70

5.2.5避免隐藏的依赖关系与全局状态 70

5.2.6单态模式的优点和缺点 71

5.2.7优先使用通用方法 72

5.2.8组合优先于继承 73

5.2.9多态优先于条件语句 73

5.3测试驱动开发 74

5.3.1调整开发周期 74

5.3.2 TDD的两个步骤 75

5.4在开发周期中的测试 76

5.5小结 79

第6章 使用stub进行粗粒度测试 80

6.1 stub简介 81

6.2使用stub测试一个HTTP连接 82

6.2.1选择使用stub的方案 83

6.2.2使用Jetty作为嵌入式服务器 84

6.3使用stub替换Web服务器资源 86

6.3.1建立第一个stub测试 86

6.3.2针对故障情况进行测试 89

6.3.3回顾第一个stub测试 90

6.4替换连接 91

6.4.1创建自定义的URL协议处理器 91

6.4.2创建一个JDK的HttpURLConnection stub 92

6.4.3运行测试 93

6.5小结 94

第7章 使用mock objects进行测试 95

7.1 mock objects简介 96

7.2使用mock objects进行单元测试 96

7.3使用mock objects来重构 99

7.3.1重构示例 100

7.4替换一个HT1T1P连接 102

7.4.1定义mock objects 103

7.4.2测试一个简单的方法 104

7.4.3第一次尝试:简单的方法重构技巧 104

7.4.4第二个尝试:使用类工厂来重构 106

7.5把mocks用作特洛伊木马 109

7.6介绍mnock框架 112

7.6.1使用EasyMock 112

7.6.2使用Mock 116

7.7小结 119

第8章 容器内测试 121

8.1标准单元测试的局限性 121

8.2 mock objects解决方案 122

8.3容器内测试 124

8.3.1实现策略 124

8.3.2容器内测试框架 125

8.4比较stub、mock objects和容器内测试 125

8.4.1 stub的优点与缺点 125

8.4.2 mock objects的优点和缺点 126

8.4.3容器内测试的优点与缺点 127

8.4.4容器内测试与容器外测试 129

8.5小结 129

第3部分JUnitit与构建过程 133

第9章从Ant中运行JUnit测试 133

9.1生命中的一天 133

9.2从Ant中运行测试 134

9.3认识并安装Ant 135

9.4 Ant的目标、项目、属性以及任务 136

9.4.1 javac任务 138

9.4.2 JUnit任务 139

9.5让Ant来执行任务 140

9.6使用Ivy进行依赖管理 141

9.7创建HTML报告 143

9.8批处理测试 145

9.9小结 147

第10章从Maven2中运行JUnit测试 148

10.1 Maven的功能 149

10.1.1约定优于配置 149

10.1.2强大的依赖管理 150

10.1.3 Maven的构建生命周期 151

10.1.4基于插件的架构 152

10.1.5 Maven项目对象模型 153

10.2建立一个Maven项目 155

10.3 Maven插件的引入 159

10.3.1 Maven的Compiler插件 159

10.3.2 Maven的Surefire插件 160

10.3.3使用Maven生成HTML格式的JUnit报告 162

10.4 Maven的不足 163

10.5小结 164

第11章 持续集成工具 165

11.1尝试持续集成 165

11.1.1持续集成测试 166

11.2拯救用户的CruiseControl 168

11.2.1开始使用CruiseControl 168

11.2.2创建一个示例项目 169

11.2.3解析CruiseControl配置文件 169

11.3另一个持续集成工具——Hudson 174

11.3.1 Hudson简介 175

11.3.2安装 175

11.3.3配置Hudson 176

11.3.4配置Hudson中的项目 177

11.4持续集成的优势 180

11.5小结 180

第4部分JUnit扩展 185

第12章 表示层的测试 185

12.1选择测试框架 186

12.2 HtmlUnit简介 186

12.2.1一个实例 186

12.3编写HtmlUnit测试 187

12.3.1 HTML断言 187

12.3.2对特定的Web浏览器进行测试 188

12.3.3测试多个Web浏览器 188

12.3.4创建独立的测试 189

12.3.5导航对象模型 191

12.3.6通过特定的元素类型访问元素 191

12.3.7通过名字与索引访问元素 191

12.3.8通过引用访问元素 192

12.3.9使用XPath 193

12.3.10测试失败和异常 194

12.3.11应用程序与网络导航 195

12.3.12使用HtmlUnit测试表单 197

12.3.13 测试框架(frame) 198

12.3.14测试JavaScript 199

12.3.15测试CSS 201

12.3.16 SSL错误 202

12.4集成HtmlUnit和Cactus 202

12.4.1在Cactus中编写测试 202

12.5Selenium简介 204

12.6生成Selenium测试 206

12.6.1一个实例 206

12.7运行Selenium测试 207

12.7.1管理Selenium服务器 207

12.7.2使用JUnit4运行Selenium测试 208

12.8编写Selenium测试 211

12.8.1针对特定的Web浏览器进行测试 211

12.8.2测试多个浏览器 212

12.8.3应用程序和网络导航 214

12.8.4通过引用访问元素 215

12.8.5通过异常使测试失败 215

12.8.6使用Selenium测试表单 216

12.8.7 测试JavaScript告警 216

12.8.8捕获一个JUnit 3测试失败的截屏 217

12.8.9捕获一个JUnit 4测测试失败的截屏 217

12.9 HtmlUnit与Selenium 218

12.10小结 219

第13章Ajax测试 220

13.1 Ajax应用程序难以测试的原因 221

13.1.1传统的Web交互 221

13.1.2Ajax交互 221

13.1.3一个崭新的世界 223

13.1.4 测试的挑战 223

13.2 Ajax的测试模式 223

13.2.1功能测试 224

13.2.2客户端脚本单元测试 224

13.2.3服务测试 225

13.3功能测试 225

13.3.1使用Seleniun进行功能测试 225

13.3.2使用HtmlUnit进行功能测试 229

13.4 JavaScript测试 231

13.4.1使用RhinoUnit测试JavaScript 231

13.4.2使用JsUnit测试JavaScript 234

13.4.3编写JsUnit测试用例 234

13.4.4编写JsUnit测试集 236

13.4.5手动运行JsUnit测试用例 237

13.4.6使用Ant自动运行JsUnit测试用例 238

13.5RhinoUnit与JsUnit 241

13.6使用JSLint检验最佳实践 241

13.7使用HttpClient测试服务 243

13.7.1调用XML服务 243

13.7.2验证XML响应 244

13.7.3验证JSON响应 245

13.8测试Google Web工具箱应用程序 247

13.8.1为GWT应用程序选择测试框架 247

13.8.2手动创建GWTTestCase 249

13.8.3使用junitCreator创建GWTTestCase 251

13.8.4运行测试用例 252

13.8.5安装和拆卸测试 252

13.8.6创建测试集 252

13.8.7运行测试集 253

13.9小结 253

第14章 使用Cactus进行服务器端的Java测试 255

14.1什么是Cactus? 256

14.2使用Cactus进行测试 256

14.2.1你可以使用Cactus测试的Java组件 256

14.2.2一般原则 257

14.2.3 Cactus如何工作 259

14.3测试servlet和filters 261

14.3.1介绍管理应用程序 262

14.3.2使用Cactus编写servlet测试 262

14.4测试JSP 268

14.4.1回顾管理应用程序 268

14.4.2什么是JSP单元测试? 269

14.4.3单独使用Cactus对JSP进行单元测试 269

14.4.4利用SQL结果数据执行JSP 270

14.5测试EJB 272

14.6什么是Cargo? 274

14.7使用Ant执行Cactus测试 275

14.7.1用来准备文件的Cactus 275

14.8使用Maven2x执行Cactus测试 280

14.8.1 Maven2 cactifywarMOJO 280

14.8.2 Maven2 cactifyearMOJO 284

14.9从浏览器执行Cactus测试 285

14.10小结 286

第15章 测试JSF应用程序 287

15.1引入JSF 288

15.2介绍示例应用程序 289

15.3测试JSF应用程序时的典型问题 295

15.4测试JSF应用程序的策略 296

15.4.1黑盒方法 296

15.4.2 Mock object援救 296

15.5使用JSUnit测试示例应用程序 298

15.5.1从浏览器执行一个JSFUnit测试 299

15.5.2使用JSFUnit测试Ajax 299

15.6使用HtmlUnit与JSFUnit 301

15.7 JSF应用程序的性能测试 302

15.8小结 304

第16章 测试OSGi组件 305

16.1 OSGi简介 306

16.2第一个OSGi服务 307

16.2.1示例应用程序 310

16.3测试OSGi服务 313

16.3.1 Mock objects 313

16.4引入JUmt4OSGi 316

16.5小结 320

第17章 测试数据库访问 321

17.1数据库单元测试的阻抗不匹配 322

17.1.1单元测试必须执行隔离的代码 322

17.1.2单元测试必须易于编写和运行 322

17.1.3单元测试必须运行快速 323

17.2 DbUnit介绍 323

17.2.1示例应用程序 324

17.2.2设置DbUnit并运行示例应用程序 325

17.3使用数据集来填充数据库 325

17.3.1 剖析DatabaseOperation 329

17.4用数据集断言数据库状态 330

17.4.1过滤数据集 332

17.4.2忽略数据列 332

17.5使用ReplacementDataSet转换数据 334

17.5.1使用ReplacementDataSet处理不同的ID问题 334

17.5.2处理NULL值 336

17.6从已有的数据库数据中创建数据集 340

17.7高级技术 341

17.7.1 DbUnit与模板设计模式 341

17.7.2通过自定义注释提高重用 344

17.7.3在数据集中使用表达式语言 346

17.8数据库访问测试的最佳做法 349

17.8.1每个开发者使用一个数据库 349

17.8.2确保目标数据库被测试 350

17.8.3为加载和存储数据创建互补测试 350

17.8.4编写加载测试用例时,应涵盖所有基本场景 350

17.8.5计划数据集的使用 351

17.8.6测试清理 351

17.9小结 352

第18章 测试基于JPA的应用程序 353

18.1测试多层应用程序 354

18.1.1示例应用程序 354

18.1.2多层、多种测试策略 356

18.2 JPA测试的方方面面 359

18.3准备基础设施 360

18.4测试JPA实体映射 364

18.4.1使用JPA ID生成器集成测试用例 365

18.5测试基于JPA的DAO 371

18.6测试外键名字 376

18.7小结 379

第 19章JUnit的其他用法 380

19.1介绍 381

19.1.1工具概述 381

19.1.2运行示例 382

19.2透明地使用mock 382

19.2.1 Unitils的EasyMock支持 383

19.2.2 FEST-Mocks 385

19.2.3 Mycila 386

19.3 DbUnit集成 388

19.4使断言更简单 391

19.4.1 JUnit-addons断言包 392

19.4.2 Unitlis的ReflectionAssert 393

19.4.3 FEST流畅断言模块 395

19.4.4 Mylica继承断言 396

19.5使用反射绕过封装 397

19.5.1内部替代物 397

19.5.2 JUnit-addons 399

19.5.3 FEST-Reflect 400

19.6小结 401

附录A JUnit 3和JUnit 4之间的不同 403

A.1全球的需求变化 403

A.1.1 JDK的要求 403

A.1.2向后/向前兼容 404

A.2 API中的变化 404

A.2.1包结构 404

A.2.2构造函数 404

A.2.3扩展TestCase 404

A.2.4测试方法名称 405

A.3注释与新增的静态导入 405

A.3.1 @Before与@After注释 405

A.3.2 @BeforeClass和@AfterClass注释 406

A.3.3忽略测试的差异 406

A.3.4静态导入 407

A.3.5异常测试 407

A.3.6超时测试 408

A.4新的JUnut runners 408

A.4.1测试运行器(Test runner) 408

A.4.2测试集 409

A.4.3参数化测试 409

A.5新的断言和假设 410

A.5.1 Hamcrest断言 411

A.5.2假设 411

A.5.3新断言 412

A.5.4断言错误 412

附录B使用自定义的运行器和匹配器扩展JUnitAPI 413

B.1介绍拦截器模式 414

B.2实现自定义运行器 414

B.3实现自定义匹配器 420

附录C本书源代码 425

C.1获取源代码 425

C.2源代码概览 426

C.3外部库 427

C.4 JAR版本 427

C.5目录结构约定 428

附录D JUnit IDE集成 429

D.1 JUnit与Eclipse的集成 429

D.1.1安装Eclipse 429

D.1.2从源代码创建Eclipse项目 430

D.1.3从Eclipse运行JUnit测试 430

D.1.4从Eclipse运行Ant脚本 431

D.2引入JUnitMAX Eclipse插件 433

D.2.1集成在你的开发周期中 433

D.2.2执行顺序 434

D.2.3恢复到上一个稳定版本 434

D.3 JUnit与NetBeans集成 434

D.3.1安装NetBeans 434

D.3.2从源代码中创建NetBeans项目 435

D.3.3从NetBeans运行JUnit测试 435

D.3.4从NetBeans运行Ant脚本 437

附录E安装软件 439

E.1安装HtmlUnit 439

E.1.1标准配置 439

E.1.2 Eclipse的配置 440

E.2使用HtmlUnit配置Cactus 441

E.3安装Selenium 442

E.4安装RhinoUnit 442

E.5安装JsUnit 442

返回顶部