如今,測試已不再是企業發展中的"可選”部分,其必將成為企業發展壯大的核心武器。本書旨在指導讀者使用測試平颱進行持續開發。本書首先闡述瞭測試在企業發展中的重要性,然後大篇幅地分析瞭一些用戶在發展中會遇到的共性問題(例如,如何引導新項目及驗證用戶界麵)的解決方案,最後,指導用戶瞭解如何構建一個終端到終端的測試方式。
序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 North
Sebastopol, CA 95472
800-998-9938 (美國或加拿大可撥)
707-829-0515 (國際或本地可撥)
707-829-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
作為一名在Java EE領域摸爬滾打瞭多年的開發者,我一直渴望找到一本能夠幫助我擺脫傳統笨重開發模式,擁抱更現代化、更敏捷開發方式的書籍。終於,我找到瞭《持續輕量級Java EE開發:編寫可測試的代碼》。這本書簡直就是我的“及時雨”!它用一種極其清晰、有條理的方式,循序漸進地引導讀者理解如何構建輕量級的Java EE應用。讓我印象深刻的是,作者並沒有僅僅停留在介紹框架和API,而是深入探討瞭背後的設計哲學和實踐原則。他強調瞭“簡單即是美”的理念,教導我們如何選擇最適閤的技術棧,避免不必要的復雜性。書中關於模塊化設計、依賴注入的講解尤其精闢,讓我對如何構建鬆耦閤、易維護的係統有瞭全新的認識。而“可測試性”這個主題,貫穿全書,它不僅僅是一個口號,而是融入到每一個開發環節。作者通過詳實的案例,展示瞭如何編寫易於測試的代碼,如何利用各種測試工具和技術來保證代碼質量。這種對測試的重視,讓我深刻體會到“測試驅動開發”(TDD)的價值,以及它如何能夠顯著提升開發速度和軟件的健壯性。這本書的實踐性非常強,讀完後立刻就能將學到的知識應用到實際項目中,並看到立竿見影的效果。
評分這本書對於初學者來說,就像一位經驗豐富的導師,能夠帶領你一步步邁入Java EE開發的殿堂,而且是以一種更輕鬆、更直觀的方式。它成功地將Java EE這個看似龐大復雜的領域,分解成瞭一係列易於理解和掌握的模塊。作者的講解風格非常平易近人,很少使用那些晦澀的技術術語,而是用最直白的語言和最貼閤實際的例子來闡述核心概念。我尤其欣賞書中關於“持續集成/持續部署”(CI/CD)與可測試性結閤的部分。作者清晰地展示瞭如何通過自動化測試來保證代碼的質量,並與CI/CD流程無縫銜接,從而實現軟件開發的持續交付。這對於我這種習慣於“一次性開發,後期維護”模式的開發者來說,是一個巨大的啓發。它讓我意識到,編寫可測試的代碼不僅僅是為瞭提高代碼質量,更是為瞭構建一個能夠快速響應市場變化,不斷迭代優化的敏捷開發體係。書中關於性能優化和安全性方麵的講解,同樣給我留下瞭深刻的印象,它教會我如何在保證代碼質量的同時,兼顧應用的性能和安全性。總而言之,這是一本集理論與實踐於一體的優秀著作,強烈推薦給所有希望在Java EE開發領域有所成就的開發者。
評分一本讓人眼前一亮的Java EE開發指南!作者深諳現代軟件開發之道,將“輕量級”和“可測試”這兩大核心理念融入Java EE的方方麵麵。閱讀過程中,我最大的感受就是這本書仿佛為我打開瞭一扇通往更高效、更健壯Java EE開發的大門。它沒有陷入那些晦澀難懂、冗長枯燥的理論講解,而是直擊痛點,用大量生動、實用的代碼示例,將復雜的概念變得觸手可及。從項目搭建、依賴注入,到Web服務、持久化,再到安全和性能優化,書中幾乎涵蓋瞭Java EE開發的完整生命周期。更重要的是,作者始終強調編寫可測試代碼的重要性,並提供瞭行之有效的實踐方法。我曾深受睏擾於Java EE項目難以測試的痛點,讀完這本書,我找到瞭解決之道。它教會我如何優雅地解耦、如何利用Mocking框架隔離依賴,以及如何構建真正能夠可靠運行的單元測試和集成測試。這種對可測試性的關注,不僅提升瞭代碼質量,更極大地提高瞭開發效率和項目的穩定性。我強烈推薦所有正在或即將從事Java EE開發的開發者閱讀這本書,它絕對會成為你工具箱裏不可或缺的利器。
評分這本書提供瞭一種全新的視角來審視Java EE的開發方式,它打破瞭我之前對Java EE“臃腫”、“復雜”的刻闆印象。作者以一種極其務實的態度,引導讀者擁抱“輕量級”的開發理念,強調在保持功能完整性的同時,追求代碼的簡潔、高效和易維護。書中關於響應式編程和微服務架構的章節,讓我對現代Java EE應用的構建有瞭更深刻的理解。它教我如何利用異步編程模型來提升應用的吞吐量和響應速度,以及如何構建獨立部署、可獨立擴展的微服務。最讓我感到驚喜的是,作者將“可測試性”置於極其重要的位置,並將其視為持續交付和高質量軟件的基石。他通過大量實際案例,展示瞭如何設計可測試的代碼,如何利用各種自動化測試手段來保障代碼的質量和穩定性。這本書的語言風格非常直接,不繞彎子,直接切中要害,讓我能夠快速地理解和掌握核心概念。而且,書中提供的代碼示例都經過精心設計,既具有代錶性,又易於理解和復用。我毫不猶豫地將這本書推薦給所有希望在Java EE開發領域實現技術飛躍的開發者,它絕對是你不可多得的寶貴財富。
評分我一直在尋找一本能夠幫助我提升Java EE開發效率的書,直到我遇到瞭《持續輕量級Java EE開發:編寫可測試的代碼》。這本書的標題就抓住瞭我最關心的問題——“輕量級”和“可測試”。作者在這本書中,並沒有像其他一些書籍那樣,僅僅羅列API和框架的使用方法,而是深入剖析瞭如何通過優雅的設計和恰當的工具,來構建更加高效、可維護的Java EE應用。書中關於領域驅動設計(DDD)和事件驅動架構(EDA)的講解,讓我眼前一亮,它提供瞭一種全新的視角來思考如何組織和構建大型Java EE係統,使其更加靈活和可擴展。尤其值得一提的是,作者將“可測試性”這一理念貫穿始終,從項目設計的初期就引導開發者考慮如何讓代碼更容易被測試。他詳盡地闡述瞭各種測試策略,從單元測試到端到端測試,以及如何有效地利用Mockito、JUnit等框架來編寫高質量的測試用例。這種對測試的重視,不僅能夠幫助我們及早發現和修復bug,更能建立起對代碼質量的信心,從而加速開發迭代。這本書的案例都非常貼近實際工作場景,讀起來毫不費力,而且學到的知識能夠立刻應用到實際項目中,帶來切實的收益。
評分很好的書值得買
評分很好的書值得買
評分很好。。。。。。。.
評分很好。。。。。。。.
評分內容還可以,還不看。
評分內容還可以,還不看。
評分很好。。。。。。。.
評分很好的書值得買
評分很好的書值得買
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有