エピソード 17: Toby Huang、カリフォルニア州サンフランシスコ(2021 年 1 月)
前のエピソード
ブラウザテストは、より高度な Chrome コードの自動テストの一種です。 単体テストよりエンドツーエンドに 最適化されますブラウザテストでは、ブラウザ インスタンスを作成してテストする 入出力機能だけをテストするのではなく、 単体テストです。統合自動テストは 開発することにありますブラウザテストを作成する際には、 ユーザーが手動で行う設定アクションをプログラムで実行できます。 そのために、mixin は、複雑なコードを ブラウザテストのセットアップを再利用可能な方法で行えます。
有用なミックスインの例:
GuestUserMixin
: シークレット モードのテストUserPolicyMixin
: サーバーからユーザー ポリシーをモックするために使用します。FakeGaiaMixin
: GAIA サーバーからのレスポンスをモックするために使用します。
独自のカスタム ミックスインを作成して、さまざまな用途に使用できます。
以下のスニペットは、テスト用のゲストユーザーとしてログインします。重要なのは 機能がシークレット モードで動作していることを確認してください
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
LoggedInUserMixin
は、ファミリー リンク ユーザーとしてログインするのに便利な手段です
テストします。機能がお子様に対する管理機能に関連する場合は、
監視対象ユーザーに対して機能をテストしてください。考えられるバグは
お子様のユーザーがシークレット モードを無効にしている、またはインストールできないことを忘れる
設定することもできます。LoggedInUserMixin
は複合ミックスインです
他の mixin で構成されます
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}; };
ミックスインの主なメリットの 1 つは、
ダイヤモンドの多重継承の問題を回避するをご覧ください。
複数のテスト基本クラスから継承すると、ダイヤモンド問題につながります。
ミックスインを混在させながら、この問題を回避できます。ミックスインの使用
継承を完全になくすことはできません。なぜなら、ブラウザのテストクラスは
MixinBasedInProcessBrowserTest
から継承する必要がありますが、
基本クラスは汎用で軽量です。