第 17 集:由加州舊金山的 Toby Huang 著 (2021 年 1 月)
上集節目
瀏覽器測試是 Chromium 程式碼的自動化測試形式,比單元測試更詳細。瀏覽器測試會建立瀏覽器執行個體並測試各種 UI 元素,而不只是測試簡單的輸入/輸出功能,就像單元測試一樣。整合式自動化測試對於模擬使用者的端對端體驗至關重要。編寫瀏覽器測試時,您通常會希望透過程式執行使用者可手動執行的設定動作。為了幫助您達成這個目標,mixins 是一套工具,能夠以可重複使用的方式執行複雜的瀏覽器測試設定。
實用的混合函式範例:
- 如要測試無痕模式,請
GuestUserMixin
UserPolicyMixin
:用於從伺服器模擬使用者政策FakeGaiaMixin
用於模擬來自 Gaia 伺服器的回應
你可以自行建立自訂組合,用於許多用途!
以下程式碼片段是以訪客使用者身分登入,以便進行測試。請務必確保這項功能在無痕模式中正常運作。
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
想以 Family Link 使用者身分登入測試嗎?LoggedInUserMixin
可讓您輕鬆登入。如果功能會影響與兒童監督相關的任何功能,您應針對受監督的使用者測試該功能。可能會發現兒童使用者已停用無痕模式,或未經家長核准才能安裝擴充功能。LoggedInUserMixin
是由其他混合物組成的複合混合。
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest { protected: void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); logged_in_user_mixin_.LogInUser(); } private: LoggedInUserMixin logged_in_user_mixin_{&mixin_host_, LoggedInUserMixin::LogInType::kChild, embedded_test_server(), this}; };
混和的其中一個主要優點是使用組合而非繼承,並避免鑽石多重繼承發生問題。沿用多個測試基礎類別會導致菱形問題,但您可以混合搭配使用混合兩者,同時避免這個問題。使用 Mixins 並不會完全取消繼承,因為瀏覽器測試類別仍需要繼承 MixinBasedInProcessBrowserTest
,但基礎類別為一般用途和輕量。