首頁 > Java > java教程 > 優雅斷言:使用 AssertJ 實作更簡潔的程式碼的自訂軟斷言

優雅斷言:使用 AssertJ 實作更簡潔的程式碼的自訂軟斷言

Mary-Kate Olsen
發布: 2024-11-23 09:11:35
原創
526 人瀏覽過

Assert with Grace: Custom Soft Assertions using AssertJ for Cleaner Code

介紹

如果您不知道什麼是軟斷言,請閱讀軟斷言 – 為什麼應該將它們用於單元和整合測試?

本文是 Assert with Grace: Custom Assertions for Cleaner Code 的延續,它向您展示如何使用 AssertJ 建立自訂斷言。在這裡,您將學習如何擴展其方法以在自訂斷言之上使用軟斷言方法。

使用 AssertJ 自訂軟斷言

您可以使用 AssertJ 中的 Assertions 類別或自訂類別進行硬斷言。為了獲得軟斷言的所有好處,我們需要:

  • 實作自訂斷言
  • 建立自訂軟體斷言類別並從 AssertJ 擴展 AbstractSoftAssertions

自訂斷言

您在 Assert with Grace: Custom Assertions for Cleaner Code 一文中了解如何建立自訂斷言。看起來像這樣:

自訂斷言的使用在測試中顯示出更多的易讀性,並將測試有效值的責任發送給它:

有了自訂斷言,是時候實作自訂軟斷言了。

建立自訂軟斷言

建立自訂軟斷言的過程很簡單,前提是實作自訂斷言。鑑於上一篇文章,我們將SimulationAssert 類別作為自訂斷言,並將建立SimulationSoftAssert 作為自訂軟斷言。步驟如下:

  1. 擴充 AbstractSoftAssertions 類別
  2. 使用下列指令建立assertThat()方法:
    • 此方法傳回一個物件作為自訂斷言類別
    • 斷言主題的參數
    • 此方法傳回方法代理,其中參數是自訂斷言類別和斷言的主題
  3. 使用以下指令建立assertSoftly() 方法:
    • 作為自訂軟斷言類別的 Consumer 的參數
    • 使用SoftAssertionsProvider.assertSoftly()方法,參數是自訂軟體斷言類,方法參數

步驟看起來很複雜,但實際上,你最終會得到這樣的結果:

使用自訂軟斷言

AssertJ SoftAssertion 類別負責軟斷言。這是適用於模擬上下文的範例:

AssertJ SoftAssertion 類別負責軟斷言。這是適用於模擬上下文的範例:

使用它的「問題」是我們將無法使用我們創建的自訂斷言。在上面的範例中,您可以使用 isEqualTo() 查看分期付款和金額中的斷言,因為 SoftAssertions 類別無法存取自訂斷言。

我們透過建立自訂軟斷言類別解決了這個問題。因此,我們將使用自訂類別:SimulationSoftAssert,而不是使用 SoftAssertions 類別。

SimulationSoftAssert.assertSoftly() 是軟體斷言的提供者,它將呼叫所有內部方法以便能夠在斷言期間管理錯誤和其他活動。在assertSoftly() 內部使用的assertThat() 將是自訂斷言,它將可以透過軟斷言和斷言主題之間的proxy() 存取自訂斷言。

使用這種方法,我們可以透過實作自訂斷言來在軟斷言中使用自訂斷言。

結束

這就是大家!

您可以在credit-api專案中找到一個完全實現且有效的範例,您可以在其中看到以下內容:

  • 模擬斷言類別
  • SimulationsCustomAssertionTest 類別中的測試用法

以上是優雅斷言:使用 AssertJ 實作更簡潔的程式碼的自訂軟斷言的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板