Chromium Chronicle #17:瀏覽器測試混合

第 17 集:在加州舊金山的 Toby Huang (2021 年 1 月)
上一集

瀏覽器測試是系統自動測試 Chromium 程式碼的一種形式。 而不是單元測試瀏覽器測試會建立瀏覽器執行個體,並進行測試 各種 UI 元素,而不只是測試純輸入/輸出功能 例如單元測試進行模擬時,整合的自動化測試相當重要 提供使用者端對端體驗編寫瀏覽器測試時,您可能會經常需要 透過程式執行使用者可手動設定的設定動作。 mixins 是一套可輕鬆執行業務的工具 以可重複使用的方式測試設定

實用混合的範例:

  • GuestUserMixin用於測試無痕模式
  • UserPolicyMixin:用於從伺服器模擬使用者政策
  • FakeGaiaMixin:用於模擬 Gaia 伺服器的回應

你可以建立自訂混音來因應各種用途!

下方程式碼片段是以訪客使用者身分登入測試。請務必 請確認該功能在無痕模式中正常運作

正確做法
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin 能讓你以 Family Link 使用者的身分輕鬆登入,體驗以下功能: 進行測試。如果您的功能會影響兒童監督功能的相關問題, 建議為受監管的使用者測試功能。可能發生的錯誤為 忘記讓兒童使用者停用無痕模式,或無法 。「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,不過幸運的是 基礎類別是一般用途的輕量級

資源