發表於2024-12-18
持續輕量級Java EE開發:編寫可測試的代碼 pdf epub mobi txt 電子書 下載
如今,測試已不再是企業發展中的"可選”部分,其必將成為企業發展壯大的核心武器。本書旨在指導讀者使用測試平颱進行持續開發。本書首先闡述瞭測試在企業發展中的重要性,然後大篇幅地分析瞭一些用戶在發展中會遇到的共性問題(例如,如何引導新項目及驗證用戶界麵)的解決方案,最後,指導用戶瞭解如何構建一個終端到終端的測試方式。
序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
前言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
第1 章持續性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
預防的真理1
被動的錯誤處理1
主動的質量策略2
軟件開發流程3
串行模型3
迭代模型3
測試即開發5
測試的分級5
單元測試6
集成測試7
基礎測試框架8
JUnit 9
TestNG 12
持續開發13
第2 章啓動技術. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Bootstrapping 15
Apache Maven 16
JBoss Forge 17
版本控製18
Git 19
Java EE 的測試平颱20
Arquillian 21
ShrinkWrap 22
ShrinkWrap Resolvers 27
實驗性功能35
運行時36
WildFly 36
OpenShi�� 37
進入編程38
第3 章從零到生産. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
開發環境39
一個新項目40
用Arquillian 編寫第一個集成測試48
在本地運行應用程序52
運行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
第10 章UI 75
第11 章組裝及部署75
第5 章Java 持久化和關係型數據. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
關係型數據模型79
Java 持久化API 81
POJO 實體82
用例和需求83
用戶角度83
技術考慮84
實現85
實體對象86
存儲庫EJB 91
需求測試場景93
測試搭建94
CRUD 測試95
第6 章NoSQL:數據網格和圖數據庫. . . . . . . . . . . . . . . . . . . . . . . . . . . 101
RDBMS:不擅長處理二進製數據102
數據網格103
RDBMS:不善長處理關係104
圖論105
用例和需求106
實現107
Attachment 107
Relation 111
需求測試場景120
Attachment CRUD 測試120
Attachment 持久化的事務完整性124
驗證關係128
第7 章業務邏輯和服務層. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
用例和需求132
新用戶注冊時發送郵件133
實現133
需求測試場景139
僅供測試所用的SMTP 服務器139
測試142
第8 章REST 和可尋址服務. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
企業Java 裏的REST:JAX-RS 規範152
用例和需求155
實現158
存儲庫資源158
描述轉換器162
@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
第10 章用戶界麵. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
用例和需求199
實現200
需求測試場景202
純JavaScript 203
功能性行為205
第11 章組裝及部署. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
獲得JBoss EAP 213
在JBoss EAP 上運行215
使用EAP 遠程容器215
使用EAP 托管容器217
持續集成和授權Build 服務器220
在CloudBees 上配置GeekSeek Build 220
使用EAP 存儲庫布局CloudBees Jenkins 222
Git Push 事件的自動構建225
推送到過渡和生産環境226
搭建OpenShi�� 應用程序226
移除默認OpenShi�� 應用程序229
從CI Build 推送Job 到OpenShi�� 230
第12 章結語. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
序
即使是古老的J2EE 也絕不僅僅是關於開發的。
從企業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 2013 大會的途中,我閱讀瞭這本書,它非常有意思,讓我學到瞭很多。希望所有人都能從這本書中有所收獲——享受輕量級Java EE 開發的生命周期!
——Adam Bien
http://adam-bien.com
即使是古老的J2EE 也絕不僅僅是關於開發的。
從企業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 2013 大會的途中我閱讀瞭這本書,它非常有意思,讓我學到瞭很多。希望所有人都能從這本書中有所收獲——享受輕量級Java EE 開發的生命周期!
-Adam Bien http://adam-bien.com(http://adam-bien.com)
簡約是復雜的最終形式。
——Leonardo DaVinci
現代Web 軟件開發的發展日新月異。近些年,大傢看到瞭客戶端狀態嚮服務器端移動的趨勢,現在又在往迴自我糾正。雖然JavaScript 的作用明顯,但是關於其價值,兩個工程師可能會給齣三個意見。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-ShareAlike2.0 Generic(http://creativecommons.org/licenses/by-sa/2.0/)許可證,本書邀請社區貢獻瞭很多工作,包括特性請求、印刷錯誤勘正,並且通過GitHub Issue Tracker(http://bit.ly/1e7kQRD)改進加強。讀者可以在遵守許可證的前提下重用所有文本或者示例,但需要注明齣處。更多細節請查看許可證。
齣處通常包括標題、作者、齣版社和ISBN。例如:“Andrew Lee Rubinger 和AslakKnutsen 撰寫的Continuous Enterprise Development in Java(O’Reilly)。Copyright 2014Andrew Lee Rubinger and Aslak Knutsen, 978-1-449-32829-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 N 持續輕量級Java EE開發:編寫可測試的代碼 下載 mobi epub pdf txt 電子書
很好的書值得買
評分很好的書值得買
評分內容還可以,還不看。
評分很好的書值得買
評分發現買錯書瞭,,,
評分發現買錯書瞭,,,
評分很好的書值得買
評分內容還可以,還不看。
評分發現買錯書瞭,,,
持續輕量級Java EE開發:編寫可測試的代碼 pdf epub mobi txt 電子書 下載