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

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

    收集中
    US$18.36
    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。

    章节目录

    • 1-1
      封面頁
    • 1-2
      書名頁
    • 1-3
    • 1-4
      目錄
    • 1-5
      Part 1建立單元測試
    • 1-6
      Ch01 使用JUnit 執行單元測試
    • 1-7
      1.1 正式程式碼與測試程式碼的差異
    • 1-8
      1.2 單元測試常見名詞說明
    • 1-9
      1.3 使用JUnit 5
    • 1-10
      1.3.1 簡介JUnit 5
    • 1-11
      1.3.2 建立第一個JUnit 5 測試專案
    • 1-12
      1.3.3 在JUnit 5 的架構下執行JUnit 4 的測試
    • 1-13
      1.3.4 以程式驅動專案內大量測試
    • 1-14
      1.3.5 以成套(Suite) 驅動專案內大量測試
    • 1-15
      1.3.6 單元測試的生命週期
    • 1-16
      1.3.7 使用Assertions
    • 1-17
      1.3.8 使用Assumptions
    • 1-18
      Ch02 建立測試替身
    • 1-19
      2.1 執行單元測試
    • 1-20
      2.1.1 單元測試的效益
    • 1-21
      2.1.2 單元測試的特徵
    • 1-22
      2.1.3 單元測試的限制
    • 1-23
      2.2 認識測試替身(Test Doubles)
    • 1-24
      2.2.1 測試替身的意義
    • 1-25
      2.2.2 測試替身的分類
    • 1-26
      2.3 使用Dummy Object
    • 1-27
      2.3.1 Dummy Object 使用情境
    • 1-28
      2.3.2 Dummy Object 使用範例
    • 1-29
      2.4 使用Test Stub
    • 1-30
      2.4.1 Test Stub 使用情境
    • 1-31
      2.4.2 Test Stub 使用範例
    • 1-32
      2.5 使用Test Spy
    • 1-33
      2.5.1 Test Spy 使用情境
    • 1-34
      2.5.2 Test Spy 使用範例
    • 1-35
      2.6 使用Mock Object
    • 1-36
      2.6.1 Mock Object 使用情境
    • 1-37
      2.6.2 Mock Object 使用範例
    • 1-38
      2.7 使用Fake Object
    • 1-39
      2.7.1 Fake Object 使用情境
    • 1-40
      2.7.2 Fake Object 使用範例
    • 1-41
      Ch03 使用Mockito(一)
    • 1-42
      3.1 認識Mockito
    • 1-43
      3.1.1 了解單元測試質量
    • 1-44
      3.1.2 設定pom.xml 使用Mockito
    • 1-45
      3.2 章節情境說明
    • 1-46
      3.3 使用Mockito 驅動單元測試
    • 1-47
      3.4 以when() 與thenReturn() 定義Mock Object 的方法
    • 1-48
      3.5 以when() 與thenThrow() 定義Mock Object 的方法
    • 1-49
      3.6 使用參數配對器(ArgumentMatcher)
    • 1-50
      3.6.1 使用類別ArgumentMatchers 定義的萬用配對器
    • 1-51
      3.6.2 使用介面ArgumentMatcher 建立自定義的參數配對器
    • 1-52
      3.7 以verify() 驗證Mock Object 的方法呼叫
    • 1-53
      3.7.1 使用Mockito.verify()
    • 1-54
      3.7.2 使用Mockito.verifyNoMoreInteractions()
    • 1-55
      3.7.3 使用Mockito.verifyNoInteractions()
    • 1-56
      3.8 以when() 與thenAnswer() 定義Mock Object 的方法
    • 1-57
      Ch04 使用Mockito(二)
    • 1-58
      4.1 章節情境說明
    • 1-59
      4.1.1 待測試類別:DelegateController
    • 1-60
      4.1.2 待測試類別:LoginController
    • 1-61
      ▍4.2 快樂路徑與悲傷路徑的測試案例
    • 1-62
      4.2.1 測試快樂路徑
    • 1-63
      4.2.2 測試悲傷路徑
    • 1-64
      4.3 測試void 方法
    • 1-65
      4.3.1 使用doThrow()
    • 1-66
      4.3.2 使用doNothing()
    • 1-67
      4.3.3 使用doAnswer()
    • 1-68
      4.3.4 使用doCallRealMethod()
    • 1-69
      4.3.5 使用連鎖doXXX()
    • 1-70
      4.4 使用doReturn() 測試有Return 的方法
    • 1-71
      4.5 使用參數捕捉器(ArgumentCaptor)
    • 1-72
      4.5.1 捕捉一般參數
    • 1-73
      4.5.2 捕捉使用泛型的集合物件參數
    • 1-74
      4.5.3 捕捉陣列參數與可變動個數的參數
    • 1-75
      4.6 使用InOrder 驗證Mock Object呼叫順序
    • 1-76
      4.7 使用Spy Object
    • 1-77
      4.7.1 比較Spy Object 與Mock Object
    • 1-78
      4.7.2 Spy Object 的局部偽冒特性
    • 1-79
      4.7.3 使用Spy Object 驗證SUT 內部方法交互作用
    • 1-80
      4.8 使用Mockito 的標註(annotation)類別
    • 1-81
      4.8.1 使用@Captor
    • 1-82
      4.8.2 使用@Spy
    • 1-83
      4.8.3 使用@InjectMocks
    • 1-84
      Ch05 使用PowerMock
    • 1-85
      5.1 使用PowerMock 測試legacy 程式碼
    • 1-86
      5.1.1 測試障礙說明
    • 1-87
      5.1.2 簡介PowerMock
    • 1-88
      5.2 偽冒static 方法
    • 1-89
      5.3 抑制類別static 成員執行初始化
    • 1-90
      5.4 抑制父類別建構子的執行
    • 1-91
      5.5 抑制類別建構子的執行
    • 1-92
      5.6 抑制方法的執行
    • 1-93
      5.7 偽冒private 方法
    • 1-94
      5.8 偽冒final 方法
    • 1-95
      5.9 建立final 類別的Mock Object
    • 1-96
      5.10 使用Mockito 偽冒static 方法、final 方法與final 類別
    • 1-97
      5.10.1 偽冒static 方法
    • 1-98
      5.10.2 偽冒final 方法和final 類別
    • 1-99
      Ch06 依據Mockito 的可測試性設計正式程式碼
    • 1-100
      6.1 了解測試障礙的可能原因
    • 1-101
      6.2 識別建構子的問題
    • 1-102
      6.2.1 測試性不良的設計
    • 1-103
      6.2.2 以依賴注入提升測試性的設計
    • 1-104
      6.3 識別初始化的問題
    • 1-105
      6.3.1 測試性不良的設計
    • 1-106
      6.3.2 以依賴注入提升測試性的設計
    • 1-107
      6.4 識別private 方法對單元測試的影響
    • 1-108
      6.4.1 測試性不良的設計
    • 1-109
      6.4.2 使用關注分離提升測試性的設計
    • 1-110
      6.4.3 提升存取層級以提升測試性
    • 1-111
      6.5 識別static 方法對單元測試的影響
    • 1-112
      6.5.1 測試性不良的設計
    • 1-113
      6.5.2 以非static 的方法重構
    • 1-114
      6.5.3 啟用Mockito 偽冒static 的支援
    • 1-115
      6.6 識別final 方法對單元測試的影響
    • 1-116
      6.6.1 測試性不良的設計
    • 1-117
      6.6.2 以非final 的方法重構
    • 1-118
      6.7 識別final 類別對單元測試的影響
    • 1-119
      6.7.1 測試性不良的設計
    • 1-120
      6.7.2 以建立final 類別的介面執行重構
    • 1-121
      6.8 識別使用new 呼叫建構子造成的測試問題
    • 1-122
      6.8.1 測試性不良的設計
    • 1-123
      6.8.2 以依賴注入提升測試性的設計
    • 1-124
      6.9 識別使用static 變數和程式碼區塊造成的測試問題
    • 1-125
      6.9.1 測試性不良的設計
    • 1-126
      6.9.2 避免使用static 程式碼區塊初始化物件或以PowerMock 測試
    • 1-127
      Part 2建立REST API
    • 1-128
      Ch07 簡介REST
    • 1-129
      7.1 什麼是REST?
    • 1-130
      7.2 認識資源(Resources)
    • 1-131
      7.2.1 以URI 辨識資源
    • 1-132
      7.2.2 URI 模板 (Templates)
    • 1-133
      7.3 資源呈現(Representation)
    • 1-134
      7.4 HTTP 方法
    • 1-135
      7.4.1 安全性(Safety)、冪等性(Idempotency)
    • 1-136
      7.4.2 GET 方法
    • 1-137
      7.4.3 HEAD 方法
    • 1-138
      7.4.4 DELETE 方法
    • 1-139
      7.4.5 PUT 方法
    • 1-140
      7.4.6 POST 方法
    • 1-141
      7.4.7 PATCH 方法
    • 1-142
      7.4.8 CRUD 和 HTTP 動詞
    • 1-143
      7.5 HTTP 狀態碼
    • 1-144
      7.6 理查森的成熟度模型
    • 1-145
      7.7 構建 REST API
    • 1-146
      Ch08 建構REST API 專案
    • 1-147
      8.1 介紹EasyPoll ( 簡易問卷) 範例專案
    • 1-148
      8.2 設計EasyPoll 專案
    • 1-149
      8.2.1 資源識別
    • 1-150
      8.2.2 資源呈現 (Representation)
    • 1-151
      8.2.3 端點(Endpoint) 識別原則
    • 1-152
      8.2.4 HTTP 方法識別
    • 1-153
      8.3 EasyPoll 專案架構說明
    • 1-154
      8.4 建置EasyPoll 範例專案
    • 1-155
      8.4.1 建立Spring Boot 專案
    • 1-156
      8.4.2 實作Domain 物件
    • 1-157
      8.4.3 定義Repository 介面
    • 1-158
      8.4.4 使用嵌入式資料庫HSQLDB
    • 1-159
      8.4.5 介紹API 測試工具Talend API Test
    • 1-160
      8.5 建置REST API
    • 1-161
      8.5.1 實作PollController 的GET 方法查詢全部資源
    • 1-162
      8.5.2 實作PollController 的POST 方法建立新資源
    • 1-163
      8.5.3 實作PollController 的GET 方法查詢指定資源
    • 1-164
      8.5.4 實作PollController 的PUT 與PATCH 方法更新指定資源
    • 1-165
      8.5.5 實作PollController 的DELETE 方法刪除指定資源
    • 1-166
      8.5.6 使用Talend API Test 測試poll 資源與polls 資源集合
    • 1-167
      8.5.7 實作VoteController
    • 1-168
      8.5.8 實作ComputeResultController
    • 1-169
      Ch09 REST API 的例外處理
    • 1-170
      9.1 資源不存在的例外處理
    • 1-171
      9.1.1 資源不存在時回應404 狀態碼
    • 1-172
      9.1.2 客製化例外回應資訊
    • 1-173
      9.2 請求參數異常的例外處理
    • 1-174
      9.2.1 以JSR-303 與JSR-349 驗證請求參數
    • 1-175
      9.2.2 客製化回應資訊與參數驗證提示
    • 1-176
      9.3 請求JSON 格式異常的例外處理
    • 1-177
      Ch10 建立REST API 使用文件
    • 1-178
      10.1 簡介Swagger
    • 1-179
      10.1.1 REST API 的資源列表文件 (Resource List File)
    • 1-180
      10.1.2 REST API 的宣告文件(Declaration Files)
    • 1-181
      10.2 使用swagger-springmvc 套件整合Swagger
    • 1-182
      10.3 簡介Swagger UI
    • 1-183
      10.4 客製Swagger UI 的資源列表文件
    • 1-184
      10.4.1 Swagger UI 需要調整的地方
    • 1-185
      10.4.2 客製Swagger UI 的方式
    • 1-186
      10.5 客製Swagger UI 的API 宣告文件
    • 1-187
      10.5.1 使用@Api 客製化群組端點敘述
    • 1-188
      10.5.2 使用@ApiOperation 客製化端點操作敘述
    • 1-189
      10.5.3 使用@ApiResponse 客製化端點回應描述
    • 1-190
      10.6 客製Swagger UI 其他頁面呈現
    • 1-191
      10.7 使用springfox-swagger2 與springfoxswagger-ui 套件整合Swagger
    • 1-192
      10.7.1 設定pom.xml
    • 1-193
      10.7.2 設定SwaggerConfig.java
    • 1-194
      Ch11 REST API 的版本控制、分頁與排序
    • 1-195
      11.1 對API 執行版本控制 (Versioning)
    • 1-196
      11.1.1 版本控制策略介紹
    • 1-197
      11.1.2 為範例專案套用版本控制
    • 1-198
      11.1.3 設定Swagger 提供版本控制說明
    • 1-199
      11.2 對API 的回應內容分頁(Pagination)
    • 1-200
      11.2.1 分頁策略介紹
    • 1-201
      11.2.2 為範例專案套用分頁機制
    • 1-202
      11.2.3 修改分頁預設資料筆數
    • 1-203
      11.3 對API 的回應內容排序 (Sorting)
    • 1-204
      11.3.1 升冪排序或降冪排序
    • 1-205
      11.3.2 為範例專案套用排序機制
    • 1-206
      Ch12 套用HATEOAS
    • 1-207
      12.1 簡介HATEOAS 與HAL
    • 1-208
      12.1.1 簡介HATEOAS
    • 1-209
      12.1.2 簡介HAL
    • 1-210
      12.2 使用spring-hateoas 套件
    • 1-211
      12.2.1 簡介spring-hateoas 套件
    • 1-212
      12.2.2 整合HATEOAS 與未分頁回應
    • 1-213
      12.2.3 整合HATEOAS 與分頁回應
    • 1-214
      Part 3建立REST API 的單元測試、整合測試、端對端測試
    • 1-215
      Ch13 存取與測試REST API
    • 1-216
      13.1 軟體的測試層級策略
    • 1-217
      13.1.1 整合測試 (Integration Test)
    • 1-218
      13.1.2 端對端測試 (End-to-End Test)
    • 1-219
      13.2 使用RestTemplate 進行REST API的端對端測試
    • 1-220
      13.2.1 使用JDK 函式庫與RestTemplate 存取資源端點
    • 1-221
      13.2.2 使用RestTemplate 的POST 相關方法新增資源
    • 1-222
      13.2.3 使用RestTemplate 的GET 相關方法查詢資源
    • 1-223
      13.2.4 使用RestTemplate 的PUT 與PATCH 相關方法更新資源
    • 1-224
      13.2.5 使用RestTemplate 的DELETE 相關方法刪除資源
    • 1-225
      13.2.6 使用RestTemplate 的GET 相關方法查詢分頁資源
    • 1-226
      13.3 使用Spring Test 進行REST API的單元測試
    • 1-227
      13.3.1 測試Rest Controller 的POJO 功能性
    • 1-228
      13.3.2 測試Rest Controller 的Controller 功能性
    • 1-229
      13.4 使用Spring Test 進行REST API的整合測試
    • 1-230
      版權頁
    • 1-231
      封底頁

    常见问答

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

    猜你喜欢

    用户评价

    | 收集中

    销售方案