Spring REST API開發與測試指南|使用Swagger、HATEOAS、JUnit、Mockito、PowerMock、Spring Test

    DevOps與後端系統建置必修技能!

    Collecting
    US$18.15
    DevOps與後端系統建置必修技能!

    鑒於前後端分離與微服務架構的興起,伺服器端需要提供API供用戶端存取。傳統的SOAP協定是以複雜的XML作為傳送媒介,已經逐漸被使用輕量化JSON傳送資訊的REST API取代,成為開發與建置API的主流。

    除此之外,API的開發和上線應用,效率與品質應該兼顧。透過DevOps流程結合開發、測試、營運,可以更快地將新增或修正的功能發佈給使用者;在這樣的環節中,自動化測試至關重要。

    本書第一部分介紹Java的單元測試框架如JUnit5、Mockito、PowerMock,並探討如何提升程式的可測試性。

    第二部分先介紹REST API的概念與背景。在使用Spring Boot建置初版REST API後,逐章示範API的例外處理、Swagger文件說明、版本控制、分頁與排序、與套用HATEOAS等。

    最後結合Spring Test模組對REST API進行單元測試、整合測試、與端對端測試,以期產出符合企業品質與效率的REST API。

    Content

    1-1封面頁
    1-2書名頁
    1-3序
    1-4目錄
    1-5Part 1建立單元測試
    1-6Ch01 使用JUnit 執行單元測試
    1-71.1 正式程式碼與測試程式碼的差異
    1-81.2 單元測試常見名詞說明
    1-91.3 使用JUnit 5
    1-101.3.1 簡介JUnit 5
    1-111.3.2 建立第一個JUnit 5 測試專案
    1-121.3.3 在JUnit 5 的架構下執行JUnit 4 的測試
    1-131.3.4 以程式驅動專案內大量測試
    1-141.3.5 以成套(Suite) 驅動專案內大量測試
    1-151.3.6 單元測試的生命週期
    1-161.3.7 使用Assertions
    1-171.3.8 使用Assumptions
    1-18Ch02 建立測試替身
    1-192.1 執行單元測試
    1-202.1.1 單元測試的效益
    1-212.1.2 單元測試的特徵
    1-222.1.3 單元測試的限制
    1-232.2 認識測試替身(Test Doubles)
    1-242.2.1 測試替身的意義
    1-252.2.2 測試替身的分類
    1-262.3 使用Dummy Object
    1-272.3.1 Dummy Object 使用情境
    1-282.3.2 Dummy Object 使用範例
    1-292.4 使用Test Stub
    1-302.4.1 Test Stub 使用情境
    1-312.4.2 Test Stub 使用範例
    1-322.5 使用Test Spy
    1-332.5.1 Test Spy 使用情境
    1-342.5.2 Test Spy 使用範例
    1-352.6 使用Mock Object
    1-362.6.1 Mock Object 使用情境
    1-372.6.2 Mock Object 使用範例
    1-382.7 使用Fake Object
    1-392.7.1 Fake Object 使用情境
    1-402.7.2 Fake Object 使用範例
    1-41Ch03 使用Mockito(一)
    1-423.1 認識Mockito
    1-433.1.1 了解單元測試質量
    1-443.1.2 設定pom.xml 使用Mockito
    1-453.2 章節情境說明
    1-463.3 使用Mockito 驅動單元測試
    1-473.4 以when() 與thenReturn() 定義Mock Object 的方法
    1-483.5 以when() 與thenThrow() 定義Mock Object 的方法
    1-493.6 使用參數配對器(ArgumentMatcher)
    1-503.6.1 使用類別ArgumentMatchers 定義的萬用配對器
    1-513.6.2 使用介面ArgumentMatcher 建立自定義的參數配對器
    1-523.7 以verify() 驗證Mock Object 的方法呼叫
    1-533.7.1 使用Mockito.verify()
    1-543.7.2 使用Mockito.verifyNoMoreInteractions()
    1-553.7.3 使用Mockito.verifyNoInteractions()
    1-563.8 以when() 與thenAnswer() 定義Mock Object 的方法
    1-57Ch04 使用Mockito(二)
    1-584.1 章節情境說明
    1-594.1.1 待測試類別:DelegateController
    1-604.1.2 待測試類別:LoginController
    1-61▍4.2 快樂路徑與悲傷路徑的測試案例
    1-624.2.1 測試快樂路徑
    1-634.2.2 測試悲傷路徑
    1-644.3 測試void 方法
    1-654.3.1 使用doThrow()
    1-664.3.2 使用doNothing()
    1-674.3.3 使用doAnswer()
    1-684.3.4 使用doCallRealMethod()
    1-694.3.5 使用連鎖doXXX()
    1-704.4 使用doReturn() 測試有Return 的方法
    1-714.5 使用參數捕捉器(ArgumentCaptor)
    1-724.5.1 捕捉一般參數
    1-734.5.2 捕捉使用泛型的集合物件參數
    1-744.5.3 捕捉陣列參數與可變動個數的參數
    1-754.6 使用InOrder 驗證Mock Object呼叫順序
    1-764.7 使用Spy Object
    1-774.7.1 比較Spy Object 與Mock Object
    1-784.7.2 Spy Object 的局部偽冒特性
    1-794.7.3 使用Spy Object 驗證SUT 內部方法交互作用
    1-804.8 使用Mockito 的標註(annotation)類別
    1-814.8.1 使用@Captor
    1-824.8.2 使用@Spy
    1-834.8.3 使用@InjectMocks
    1-84Ch05 使用PowerMock
    1-855.1 使用PowerMock 測試legacy 程式碼
    1-865.1.1 測試障礙說明
    1-875.1.2 簡介PowerMock
    1-885.2 偽冒static 方法
    1-895.3 抑制類別static 成員執行初始化
    1-905.4 抑制父類別建構子的執行
    1-915.5 抑制類別建構子的執行
    1-925.6 抑制方法的執行
    1-935.7 偽冒private 方法
    1-945.8 偽冒final 方法
    1-955.9 建立final 類別的Mock Object
    1-965.10 使用Mockito 偽冒static 方法、final 方法與final 類別
    1-975.10.1 偽冒static 方法
    1-985.10.2 偽冒final 方法和final 類別
    1-99Ch06 依據Mockito 的可測試性設計正式程式碼
    1-1006.1 了解測試障礙的可能原因
    1-1016.2 識別建構子的問題
    1-1026.2.1 測試性不良的設計
    1-1036.2.2 以依賴注入提升測試性的設計
    1-1046.3 識別初始化的問題
    1-1056.3.1 測試性不良的設計
    1-1066.3.2 以依賴注入提升測試性的設計
    1-1076.4 識別private 方法對單元測試的影響
    1-1086.4.1 測試性不良的設計
    1-1096.4.2 使用關注分離提升測試性的設計
    1-1106.4.3 提升存取層級以提升測試性
    1-1116.5 識別static 方法對單元測試的影響
    1-1126.5.1 測試性不良的設計
    1-1136.5.2 以非static 的方法重構
    1-1146.5.3 啟用Mockito 偽冒static 的支援
    1-1156.6 識別final 方法對單元測試的影響
    1-1166.6.1 測試性不良的設計
    1-1176.6.2 以非final 的方法重構
    1-1186.7 識別final 類別對單元測試的影響
    1-1196.7.1 測試性不良的設計
    1-1206.7.2 以建立final 類別的介面執行重構
    1-1216.8 識別使用new 呼叫建構子造成的測試問題
    1-1226.8.1 測試性不良的設計
    1-1236.8.2 以依賴注入提升測試性的設計
    1-1246.9 識別使用static 變數和程式碼區塊造成的測試問題
    1-1256.9.1 測試性不良的設計
    1-1266.9.2 避免使用static 程式碼區塊初始化物件或以PowerMock 測試
    1-127Part 2建立REST API
    1-128Ch07 簡介REST
    1-1297.1 什麼是REST?
    1-1307.2 認識資源(Resources)
    1-1317.2.1 以URI 辨識資源
    1-1327.2.2 URI 模板 (Templates)
    1-1337.3 資源呈現(Representation)
    1-1347.4 HTTP 方法
    1-1357.4.1 安全性(Safety)、冪等性(Idempotency)
    1-1367.4.2 GET 方法
    1-1377.4.3 HEAD 方法
    1-1387.4.4 DELETE 方法
    1-1397.4.5 PUT 方法
    1-1407.4.6 POST 方法
    1-1417.4.7 PATCH 方法
    1-1427.4.8 CRUD 和 HTTP 動詞
    1-1437.5 HTTP 狀態碼
    1-1447.6 理查森的成熟度模型
    1-1457.7 構建 REST API
    1-146Ch08 建構REST API 專案
    1-1478.1 介紹EasyPoll ( 簡易問卷) 範例專案
    1-1488.2 設計EasyPoll 專案
    1-1498.2.1 資源識別
    1-1508.2.2 資源呈現 (Representation)
    1-1518.2.3 端點(Endpoint) 識別原則
    1-1528.2.4 HTTP 方法識別
    1-1538.3 EasyPoll 專案架構說明
    1-1548.4 建置EasyPoll 範例專案
    1-1558.4.1 建立Spring Boot 專案
    1-1568.4.2 實作Domain 物件
    1-1578.4.3 定義Repository 介面
    1-1588.4.4 使用嵌入式資料庫HSQLDB
    1-1598.4.5 介紹API 測試工具Talend API Test
    1-1608.5 建置REST API
    1-1618.5.1 實作PollController 的GET 方法查詢全部資源
    1-1628.5.2 實作PollController 的POST 方法建立新資源
    1-1638.5.3 實作PollController 的GET 方法查詢指定資源
    1-1648.5.4 實作PollController 的PUT 與PATCH 方法更新指定資源
    1-1658.5.5 實作PollController 的DELETE 方法刪除指定資源
    1-1668.5.6 使用Talend API Test 測試poll 資源與polls 資源集合
    1-1678.5.7 實作VoteController
    1-1688.5.8 實作ComputeResultController
    1-169Ch09 REST API 的例外處理
    1-1709.1 資源不存在的例外處理
    1-1719.1.1 資源不存在時回應404 狀態碼
    1-1729.1.2 客製化例外回應資訊
    1-1739.2 請求參數異常的例外處理
    1-1749.2.1 以JSR-303 與JSR-349 驗證請求參數
    1-1759.2.2 客製化回應資訊與參數驗證提示
    1-1769.3 請求JSON 格式異常的例外處理
    1-177Ch10 建立REST API 使用文件
    1-17810.1 簡介Swagger
    1-17910.1.1 REST API 的資源列表文件 (Resource List File)
    1-18010.1.2 REST API 的宣告文件(Declaration Files)
    1-18110.2 使用swagger-springmvc 套件整合Swagger
    1-18210.3 簡介Swagger UI
    1-18310.4 客製Swagger UI 的資源列表文件
    1-18410.4.1 Swagger UI 需要調整的地方
    1-18510.4.2 客製Swagger UI 的方式
    1-18610.5 客製Swagger UI 的API 宣告文件
    1-18710.5.1 使用@Api 客製化群組端點敘述
    1-18810.5.2 使用@ApiOperation 客製化端點操作敘述
    1-18910.5.3 使用@ApiResponse 客製化端點回應描述
    1-19010.6 客製Swagger UI 其他頁面呈現
    1-19110.7 使用springfox-swagger2 與springfoxswagger-ui 套件整合Swagger
    1-19210.7.1 設定pom.xml
    1-19310.7.2 設定SwaggerConfig.java
    1-194Ch11 REST API 的版本控制、分頁與排序
    1-19511.1 對API 執行版本控制 (Versioning)
    1-19611.1.1 版本控制策略介紹
    1-19711.1.2 為範例專案套用版本控制
    1-19811.1.3 設定Swagger 提供版本控制說明
    1-19911.2 對API 的回應內容分頁(Pagination)
    1-20011.2.1 分頁策略介紹
    1-20111.2.2 為範例專案套用分頁機制
    1-20211.2.3 修改分頁預設資料筆數
    1-20311.3 對API 的回應內容排序 (Sorting)
    1-20411.3.1 升冪排序或降冪排序
    1-20511.3.2 為範例專案套用排序機制
    1-206Ch12 套用HATEOAS
    1-20712.1 簡介HATEOAS 與HAL
    1-20812.1.1 簡介HATEOAS
    1-20912.1.2 簡介HAL
    1-21012.2 使用spring-hateoas 套件
    1-21112.2.1 簡介spring-hateoas 套件
    1-21212.2.2 整合HATEOAS 與未分頁回應
    1-21312.2.3 整合HATEOAS 與分頁回應
    1-214Part 3建立REST API 的單元測試、整合測試、端對端測試
    1-215Ch13 存取與測試REST API
    1-21613.1 軟體的測試層級策略
    1-21713.1.1 整合測試 (Integration Test)
    1-21813.1.2 端對端測試 (End-to-End Test)
    1-21913.2 使用RestTemplate 進行REST API的端對端測試
    1-22013.2.1 使用JDK 函式庫與RestTemplate 存取資源端點
    1-22113.2.2 使用RestTemplate 的POST 相關方法新增資源
    1-22213.2.3 使用RestTemplate 的GET 相關方法查詢資源
    1-22313.2.4 使用RestTemplate 的PUT 與PATCH 相關方法更新資源
    1-22413.2.5 使用RestTemplate 的DELETE 相關方法刪除資源
    1-22513.2.6 使用RestTemplate 的GET 相關方法查詢分頁資源
    1-22613.3 使用Spring Test 進行REST API的單元測試
    1-22713.3.1 測試Rest Controller 的POJO 功能性
    1-22813.3.2 測試Rest Controller 的Controller 功能性
    1-22913.4 使用Spring Test 進行REST API的整合測試
    1-230版權頁
    1-231封底頁

    FAQ

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    Recommendations

    Reviews

    | Collecting

    Sales Plans