网上购物 货比三家
您现在的位置:快乐比价网 > 图书 > 计算机与网络 > 程序设计 > 商品详情

JUnit实战(第2版)

分享到:
JUnit实战(第2版)

最 低 价:¥49.80

定 价:¥79.00

作 者:(美)Petar Tahchiev

出 版 社:人民邮电出版社

出版时间:2012 年4月

I S B N:9787115274755

  • JUnit实战(第2版)
  • 送货上门
  • 价格
    49.80元
  • JUnit实战(第2版)
  • 送货上门
  • 价格
    59.20元
  • JUnit实战(第2版)
  • 送货上门
  • 价格
    59.25元
    价格
    59.30元

    商品详情

    编辑推荐

    一本经典的Java编程著作
      多种测试的完美展示,让你在代码世界更得心应手

    内容简介

    书籍
    计算机书籍
      《junit实战(第2版)》从认识junit、不同的测试策略、junit与构建过程、junit扩展4个方面,由浅入深、由易到难地对junit展开了系统的讲解,包括探索junit的核心、软件测试原则、测试覆盖率与开发、使用stub进行粗粒度测试、使用mock objects进行测试、容器内测试、从ant中运行junit测试、从maven2中运行junit测试、持续集成工具、表示层的测试、ajax测试、使用cactus进行服务器端的java测试、测试jsf应用程序、测试osgi组件、测试数据库访问、测试基于jpa的应用程序、junit的其他用法等内容。
      《junit实战(第2版)》不仅仅介绍了使用junit框架测试项目必须掌握的核心概念,还指导读者如何使用junit框架编写自己的测试用例,并针对在编写代码的过程中如何使得代码可测试给出建议。本书还介绍了基础的软件开发原则,如测试驱动开发(tdd)等,以便指导用户如何使用不同的工具来测试典型java ee应用程序的每一层。此外,本书也提供了几个附录,以帮助读者快速转换到最新版本的junit,并且能够轻松地集成自己喜欢的ide。
      《junit实战(第2版)》适合于已具有一定java编程基础的读者,以及在java平台下进行各类软件开发的开发人员、测试人员。对于单元测试学习者和编程爱好者来说,本书则具有极高的学习参考价值。

    作者简介

    Petar Tahchiev是一名软件工程师,担任了Apache软件基金会(Apache Software Foundation)的Jakarta项目管理委员会(PMC)成员。多年来,他一直是Jakarta Cactus 的开发主力,也参与了ApacheMaven开发团队。此外,他也是JCP成员和Bulgarian Java UserGroup(BGJUG)的负责人,经常在OpenFest、ApacheCON、Community ONE和许多其他会议上发表演讲。Petar在保加利亚出生并长大,并以优异的成绩毕业于索非亚(Sofia,保加利亚首都)大学的数学系。他曾在德国和荷兰的公司(如Unic、惠普)任职多年,现在他回到可爱.. << 查看详细

    目录

    《junit实战(第2版)》
    第1部分 认识junit
    第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 fa?ade 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部分 不同的测试策略
    第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 替换一个http连接 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 介绍mock框架 112
    7.6.1 使用easymock 112
    7.6.2 使用jmock 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部分 junit与构建过程
    第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扩展
    第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.5 selenium简介 204
    12.6 生成selenium测试 206
    12.6.1 一个实例 206
    12.7 运行selenium测试 207
    12.7.1 管理selenium服务器 207
    12.7.2 使用junit 4运行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.2 ajax交互 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.5 rhinounit与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 cactifywar mojo 280
    14.8.2 maven2 cactifyear mojo 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 引入junit4osgi 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 新的junit 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

    商品评论(0条)

    暂无评论!

    您的浏览历史

    loading 内容加载中,请稍后...