程式庫限制

第三方/abseil-cpp

決定:不要在新的程式碼中使用 absl。一般來說,absl 不適合用於 Fuchsia 的用途。遷移現有用戶端後,我們就會從樹狀結構中移除 abslhttps://fxbug.dev/42137495 會追蹤這項移除工作。

第三方/googletest

烏賊

使用 Gtest 架構在 Zircon 目錄以外的所有位置編寫測試。並提供 TESTTEST_F 巨集,以及我們使用的 ASSERTEXPECT 變體。

在 Zircon 目錄中,改用 system/ulib/zxtest。它提供類似 Gtest 的介面,減少對較高層級 OS 概念 (例如互斥鎖) 的依附元件。此 SDK 也支援以 C 編寫測試,這是某些層需要的。

吊床

Gmock 包含數個元件,我們允許模擬比對器,例如 ElementsAre()

使用者對函式模擬函式 (MOCK_METHODEXPECT_CALL) 有不同的看法。

優點:

  • 執行某些類型的模擬十分有效。
  • 有些人認為 Gmock 產生的模擬比對等的自訂程式碼更容易閱讀。
  • 如果沒有模擬程式庫,表示部分使用者可能不適合撰寫良好的測試。

缺點:

  • Gmock 提供網域專屬語言。並非所有人都瞭解這種語言,且範本和巨集的複雜用法也很難診斷問題。
  • Gmock 有些方面鼓勵過度受限的模擬畫面,
  • 上述條件組合可能會導致日後更難變更模擬的程式碼。

決策:請勿使用 gmock (MOCK_METHODEXPECT_CALL) 的模擬功能。