持续轻量级JavaEE开发-编写可测试的代码pdf下载pdf下载

持续轻量级JavaEE开发-编写可测试的代码百度网盘pdf下载

作者:
简介:本篇主要提供持续轻量级JavaEE开发-编写可测试的代码pdf下载
出版社:末桥图书专营店
出版时间:2017-02
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息

  • 商品名:持续轻量级Java EE开发-编写可测试的代码97871□1306488
  • ISBN:9787121306488
  • 定价:59
  • 出版社:电子工业出版社
  • 作者:(美)Andrew Lee Rubinger(安德鲁·李·鲁宾格),Aslak Knutsen(阿斯

参考信息(以实物为准)

  • 出版时间:2017-02-01
  • 印刷时间:2017-02-01
  • 版次:1
  • 印次:1
  • 包装:平装
  • 开本:16开
  • 用纸:胶版纸
  • 页数:264
  • 字数:318000

内容简介

  如今,测试已不再是企业发展中的"可选”部分,其必将成为企业发展壮大的核心武器。本书旨在指导读者使用测试□台进行持续开发。本书首先阐述了测试在企业发展中的重要性,然后大篇幅地分析了一些用户在发展中会遇到的共性问题(例如,如何引导新项目及验证用户界面)的解决方案,□后,指导用户了解如何构建一个终端到终端的测试方式。

前言序言

  即使是古老的J□EE 也绝不仅仅是关于开发的。

  从企业Java 的出现开始,就有了严格定义的整体角色概念。组件提供者、组装者、系统管理员和服务器提供者,都有清晰且独特的职责,但是这些角色在真实世界里很少有真正的支撑。因为政策和组织结构的原因,开发人员通常需要承担所有这些角色的职责,可能的例外也只是系统管理和运维。开发人员的首要目标是开发,因此上述意图良好的角色划分很快就没有意义了。

  在“真实世界”里,特定的运维部门负责维护开发周期的成果,尝试安装、运行、保持应用在线。因此这里真正起作用的是人为划分的模型,但是它和□佳方式相去甚远。有时情况会尤其糟糕,签署文档甚至会比产品质量更加重要。

  如果你只对快速hack 感兴趣,那么肯定会厌恶Java EE 和应用服务器,也很可能会因此讨厌这本书。如果你只关注于开发,那么打包、部署、监控和管理听上去就是多此一举。

  但是,“DevOps”将运维和开发看作一个单独单元。谁会需要漂亮,却无法在预定义环境里正常部署的代码呢?DevOps 并不是什么开创性的事物,相反,它是“回到初心”的倡导。

  本书不仅契合DevOps 的理念,还编程式地展现了如何从零开始构建一个Java EE 应用程序,并且填补了Java EE 规范的空白之处。本书还用具体的代码深入地阐述了项目和归档创建的自动化、Maven build 在流程里的编程式集成,以及所有级别的测试。本书不仅关注□佳实践,而且向读者展示了如何测试难以测试的场景,包括SMTP服务器和消息驱动Bean 的样例。

  虽然本书介绍的工具、库函数和框架都是由Red Hat 公司的员工发起的,但是即使你完全没有用过JBoss 或者WildFly,这本书也会很有价值。实际上,我同时在GlassFish和TomEE 上使用Arquillian、ShrinkWrap 和Forge 来测试应用程序。并且,我在研讨会(http://airhacks.com)里使用了Arquillian 测试插件、扩展和复杂的依赖注入,而无须将mock 部署到生产归档里。

  在飞往San Francisco 的JavaOne □013 大会的途中我阅读了这本书,它非常有意思,让我学到了很多。希望所有人都能从这本书中有所收获——享受轻量级Java EE 开发的生命周期!

  -Adam Bien http://adam-bien.com(http://adam-bien.com)



  简约是复杂的□终形式。

  ——Leonardo DaVinci

  现代Web 软件开发的发展日新月异。近些年,大家看到了客户端状态向服务器端移动的趋势,现在又在往回自我纠正。虽然 的作用明显,但是关于其价值,两个工程师可能会给出三个意见。HTML5 开创了在浏览器里支持富媒体和并发的新时代。在颇具实力的NoSQL 系统的挑战下,统治业界40 年之久的关系数据模型开始有些过时,同时版本控制存储也经历了实现和范式的改革。

  可用的工具正在不断变化,要从中做出选择难免会眼花缭乱。

  同时,工程师们也面临着构建多用户程序所带来的巨大挑战。大家都喜欢简洁、易于维护的代码,需要代码能够高效并且安全地运行,工程师们必须保证代码的正确性。

  在Java 的世界里,很多答案来自于伴随Java 企业版(Java Enterprise Edition)发布的一系列规范。这项努力的首要目标仍然是:隐藏软件开发固有的复杂语法,并且尝试根据需求提供清晰的标准模型。换句话说,Java EE □台包括很多不断演变的工具包,而其中一个可能不太可靠。

  因此几年后,大家开始填补那些Java EE 没有规范的漏洞,□终掌握了一个可以激发想象力,并且经证明比□初设想更为灵活的测试框架。很明显,为了充实想法以便更好地分享所收获的经验教训,并不需要罗列任何特别的技术。开发人员一直想拥有一张详尽的地图,能够帮助理解Java EE,及其附属框架和服务。

  本书不会详细介绍某个规范,这些资料可以在别处找到,因为本书认为通过解决方案(Solution)来开始学习并没有太大意义。

  相反,本书从问题(Problem)开始。我们为企业级Java 的可测试开发选择了以用例为中心的方案,并且在一些理论探索和必要的背景介绍之后,每章都会解决一个高层次的问题。本书提出的解决方案涵盖范围从用户界面到持久化存储,并且会涉及许多标准和第三方项目。所有示例都是可执行的,还可以在相关网站的生产环境上运行从而加以验证。

  新手能够借助本书达到企业级Java 开发人员的水□, 能够从零开始将一个空白存储库建设成完整部署在公有云之上的公开应用程序。各种程序员都能够从本书中找到极具吸引力的方法,用来测试种子数据,向客户端推送事件,与分布式数据网格交互,验证用户界面,等等。

  很简单,本书的目标是将复杂的事情变得简单些。幸运的是,这会带来更高的工作效率和更多的乐趣。

  至少,这是我们采用本书中提到的技术时得到的经验。

  本书使用的排版约定

  如下是本书中使用的排版规范:

  斜体表示新名词、UR、电子邮件地址、文件名、文件扩展名。

  等宽体用于程序列表,以及在段落中引用的程序元素,比如变量、函数名称、数据库、数据类型、环境变量、语句和关键字。

  等宽粗体显示命令或其他应该由用户键入的文本。

  等宽斜体显示应该由用户提供的值或上下文确定的值所替换的文本。

  该图标表示小窍门或者建议。


  前言

  该图标表示一般注解。

  该图标表示警告或者注意事项。

  使用代码示例

  从http://continuousdev.org可以下载辅助资料(代码示例、练习等)。第第4 章章里有详细介绍。

  本书帮助读者完成自己的工作,所有内容使用Creative Commons Attribution-ShareAlike□.0 Generic(http://creativecommons.org/licenses/by-sa/□.0/)许可证,本书邀请社区贡献了很多工作,包括特性请求、印刷错误勘正,并且通过GitHub Issue Tracker(http://bit.ly/1e7kQRD)改进加强。读者可以在遵守许可证的前提下重用所有文本或者示例,但需要注明出处。更多细节请查看许可证。

  出处通常包括标题、作者、出版社和ISBN。例如:“Andrew Lee Rubinger 和AslakKnutsen 撰写的Continuous Enterprise Development in Java(O’Reilly)。Copyright □014Andrew Lee Rubinger and Aslak Knutsen, 978-1-449-3□8□9-0.”

  Safari? Books Online

  Safari Books Online(http://my.safaribooksonline.com/?portal=oreilly)是按需的数字图书馆,以书籍和视频的形式,提供来自技术和商业领域的世界□□作家的专业内容。

  技术专家、软件开发人员、web 设计师以及业务和创新专家将Safari Books Online 作为其主要资源,用来研究、解决问题,学习以及认证培训。

  Safari Books Online 为企业,政府机构和个人提供一系列产品组合和付费项目。订阅者能够访问完整可搜索数据库里的数千本书、培训视频和正式出版前的手稿,涵盖的出版社包括O’Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microso Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley &Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology,等等。在线可获得更多有关Safari Books Online 的信息。

  如何联系我们

  请将本书相关的评论和问题发送给出版社:

  O’Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 9547□

  800-998-9938 (美国或加拿大可拨)

  707-8□9-0515 (国际或本地可拨)

  707-8□9-0104 (传真)

  本书有自己的网页,里面列出了勘误表、示例和所有额外信息。从http://oreil.ly/-continuous-enterprise(http://oreil.ly/continuous-enterprise)访问该网页。关于本书的评论或者技术问题,请发送邮件到bookquestions@oreilly.com(mailto:bookquestions@oreilly.com)。

  要获取更多关于我们的书籍、课程、会议和新闻,请访问网站http://www.oreilly.com。

  Facebook 主页:http://facebook.com/oreilly(http://facebook.com/oreilly)

  在Twitter 上关注我们:http://twitter.com/oreillymedia(http://twitter.com/oreillymedia)

  YouTube 上的视频:http://www.youtube.com/oreillymedia(http://www.youtube.co


目录

序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v

前言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix


□□ 章持续性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

预防的真理1

被动的错误处理1

主动的质量策略□

软件开发流程3

串行模型3

迭代模型3

测试即开发5

测试的分级5

单元测试6

集成测试7

基础测试框架8

JUnit 9

TestNG 1□

持续开发13

第□ 章启动技术. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Bootstrapping 15

Apache Maven 16

JBoss Forge 17

版本控制18

Git 19

Java EE 的测试□台□0

Arquillian □1

ShrinkWrap □□

ShrinkWrap Resolvers □7

实验性功能35

运行时36

WildFly 36

OpenShi 37

进入编程38

第3 章从零到生产. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

开发环境39

一个新项目40

用Arquillian 编写□□个集成测试48

在本地运行应用程序5□

运行Arquillian 集成测试54

通过JBoss Developer Studio 部署到OpenShi 上55

第4 章需求和示例应用程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

GeekSeek 介绍64

功能集64

概念数据模型65

逻辑数据模型66

获得,构建,测试和运行GeekSeek 68

用例和章节指南73

第5 章Java 持久化和关系型数据73

第6 章NoSQL:数据网格和图数据库74

第7 章业务逻辑和服务层74

第8 章REST 和可寻址服务74

第9 章安全性74

□□0 章UI 75

□□1 章组装及部署75

第5 章Java 持久化和关系型数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

关系型数据模型79

Java 持久化API 81

POJO 实体8□

用例和需求83

用户角度83

技术考虑84

实现85

实体对象86

存储库EJB 91

需求测试场景93

测试搭建94

CRUD 测试95

第6 章NoSQL:数据网格和图数据库. . . . . . . . . . . . . . . . . . . . . . . . . . . 101

RDBMS:不擅长处理二进制数据10□

数据网格103

RDBMS:不善长处理关系104

图论105

用例和需求106

实现107

Attachment 107

Relation 111

需求测试场景1□0

Attachment CRUD 测试1□0

Attachment 持久化的事务完整性1□4

验证关系1□8

第7 章业务逻辑和服务层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

用例和需求13□

新用户注册时发送邮件133

实现133

需求测试场景139

仅供测试所用的SMTP 服务器139

测试14□

第8 章REST 和可寻址服务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

企业Java 里的REST:JAX-RS 规范15□

用例和需求155

实现158

存储库资源158

描述转换器16□

@ResourceModel 164

LinkableRepresentation 166

ResourceLink 169

需求测试场景170

黑盒测试170

验证支持Warp 的HTTP 协定173

Arquillian Warp 173

测试装置搭建175

HTTP 协定测试176

第9 章安全性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

用例和需求180

实现180

支撑软件180

需求测试场景189

综述189

搭建189

安全测试190

□□0 章用户界面. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

用例和需求199

实现□00

需求测试场景□0□

纯 □03

功能性行为□05

□□1 章组装及部署. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . □13

获得JBoss EAP □13

在JBoss EAP 上运行□15

使用EAP 远程容器□15

使用EAP 托管容器□17

持续集成和授权Build 服务器□□0

在CloudBees 上配置GeekSeek Build □□0

使用EAP 存储库布局CloudBees Jenkins □□□

Git Push 事件的自动构建□□5

推送到过渡和生产环境□□6

搭建OpenShi 应用程序□□6

移除默认OpenShi 应用程序□□9

从CI Build 推送Job 到OpenShi □30

□□□ 章结语. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . □33


精彩书摘

即使是古老的J□EE 也绝不仅仅是关于开发的。

从企业Java 的出现开始,就有了严格定义的整体角色概念。组件提供者、组装者、系统管理员和服务器提供者,都有清晰且独特的职责,但是这些角色在真实世界里很少有真正的支撑。因为政策和组织结构的原因,开发人员通常需要承担所有这些角色的职责,可能的例外也只是系统管理和运维。开发人员的首要目标是开发,因此上述意图良

好的角色划分很快就没有意义了。

在“真实世界”里,特定的运维部门负责维护开发周期的成果,尝试安装、运行、保持应用在线。因此这里真正起作用的是人为划分的模型,但是它和□佳方式相去甚远。有时情况会尤其糟糕,签署文档甚至会比产品质量更加重要。

如果你只对快速hack 感兴趣,那么肯定会厌恶Java EE 和应用服务器,也很可能会因此讨厌这本书。如果你只关注于开发,那么打包、部署、监控和管理听上去就是多此一举。

但是,“DevOps”将运维和开发看作一个单独单元。谁会需要漂亮,却无法在预定义环境里正常部署的代码呢?DevOps 并不是什么开创性的事物,相反,它是“回到初心”的倡导。

本书不仅契合DevOps 的理念,还编程式地展现了如何从零开始构建一个Java EE 应用程序,并且填补了Java EE 规范的空白之处。本书还用具体的代码深入地阐述了项目和归档创建的自动化、Maven build 在流程里的编程式集成,以及所有级别的测试。本书不仅关注□佳实践,而且向读者展示了如何测试难以测试的场景,包括SMTP 服务器和消息驱动Bean 的样例。

虽然本书介绍的工具、库函数和框架都是由Red Hat 公司的员工发起的,但是即使你完全没有用过JBoss 或者WildFly,这本书也会很有价值。实际上,我同时在GlassFish和TomEE 上使用Arquillian、ShrinkWrap 和Forge 来测试应用程序,并且,我在研讨会(http://airhacks.com)里使用了Arquillian 测试插件、扩展和复杂的依赖注入,而无须将mock 部署到生产归档里。

在飞往旧金山的JavaOne □013 大会的途中,我阅读了这本书,它非常有意思,让我学到了很多。希望所有人都能从这本书中有所收获——享受轻量级Java EE 开发的生命周期!

——Adam Bien

http://adam-bien.com