Chromium Chronicle #17:浏览器测试混合

第 17 集:由 Toby Huang 在加利福尼亚州旧金山创作(2021 年 1 月)
上一集

浏览器测试是一种自动化测试形式,适用于 比单元测试更加简单。浏览器测试会创建浏览器实例并测试 各种界面元素,而不仅仅是测试纯输入/输出功能 类似单元测试集成的自动化测试对于模拟 用户的端到端体验。编写浏览器测试时,您通常需要 以编程方式执行用户可手动执行的设置操作。 为帮助您实现这一目标,mixin 是一套用于执行重要任务的工具, 以可重复使用的方式进行浏览器测试设置

有用的 mixin 示例:

  • 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};
};

Mixin 的主要优势之一是使用组合,而不是 以及避免菱形多重继承方面的问题。 继承自多个测试基类会导致菱形问题, 但您可以混搭混合内容,同时避免此问题使用 mixins 因为浏览器测试类仍然 需要从 MixinBasedInProcessBrowserTest 继承,但幸运的是, 基类是通用的轻量级基类。

资源