第三方/abseil-cpp
決定:不要在新的程式碼中使用 absl
。一般來說,absl
不適合用於 Fuchsia 的用途。遷移現有用戶端後,我們就會從樹狀結構中移除 absl
。https://fxbug.dev/42137495 會追蹤這項移除工作。
第三方/googletest
烏賊
使用 Gtest 架構在 Zircon 目錄以外的所有位置編寫測試。並提供 TEST
和 TEST_F
巨集,以及我們使用的 ASSERT
和 EXPECT
變體。
在 Zircon 目錄中,改用 system/ulib/zxtest
。它提供類似 Gtest 的介面,減少對較高層級 OS 概念 (例如互斥鎖) 的依附元件。此 SDK 也支援以 C 編寫測試,這是某些層需要的。
吊床
Gmock 包含數個元件,我們允許模擬比對器,例如 ElementsAre()
。
使用者對函式模擬函式 (MOCK_METHOD
和 EXPECT_CALL
) 有不同的看法。
優點:
- 執行某些類型的模擬十分有效。
- 有些人認為 Gmock 產生的模擬比對等的自訂程式碼更容易閱讀。
- 如果沒有模擬程式庫,表示部分使用者可能不適合撰寫良好的測試。
缺點:
- Gmock 提供網域專屬語言。並非所有人都瞭解這種語言,且範本和巨集的複雜用法也很難診斷問題。
- Gmock 有些方面鼓勵過度受限的模擬畫面,
- 上述條件組合可能會導致日後更難變更模擬的程式碼。
決策:請勿使用 gmock (MOCK_METHOD
和 EXPECT_CALL
) 的模擬功能。