Chronicle Chromium nr 17: składanki testowe

Odcinek 17: Toby Huang w San Francisco, Kalifornia (styczeń 2021 r.)
Poprzednie odcinki

Testy przeglądarki to forma automatycznego testowania kodu Chromium, która jest bardziej kompleksowa niż testy jednostkowe. Testy przeglądarki tworzą instancje przeglądarki i testują różne elementy interfejsu, zamiast testować tylko funkcje wejścia-wyjścia, takie jak testy jednostkowe. Zintegrowane, automatyczne testowanie jest ważne, ponieważ pozwala symulować kompleksową symulację działania użytkownika. Gdy piszesz test przeglądarki, często chcesz programowo wykonać działania konfiguracyjne, które użytkownik może wykonać ręcznie. Aby Ci w tym pomóc, składanki to pakiet narzędzi do przeprowadzania prostych konfiguracji testów przeglądarki z możliwością wielokrotnego użytku.

Przykłady przydatnych składanek:

  • GuestUserMixin do testowania trybu incognito
  • UserPolicyMixin za ośmieszenie zasad dotyczących użytkowników z serwera
  • FakeGaiaMixin za wyśmiewające odpowiedzi z serwera Gaia

Możesz tworzyć własne składanki przeznaczone do różnych celów.

Poniższy fragment kodu loguje się w teście jako gość. Pamiętaj, aby upewnić się, że Twoja funkcja działa w trybie incognito.

Tak
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest {
 private:
  GuestSessionMixin guest_session_mixin_{&mixin_host_};
};

LoggedInUserMixin to wygodny sposób logowania się jako użytkownik Family Link podczas testów. Jeśli Twoja funkcja ma wpływ na jakiekolwiek kwestie związane z nadzorem nad dziećmi, przetestuj ją pod kątem nadzorowanych użytkowników. Możliwym błędem jest zapomnienie, że użytkownicy niepełnoletni mają wyłączony tryb incognito lub nie mogą instalować rozszerzeń bez zgody rodzica. LoggedInUserMixin to mieszanka złożona złożona z innych mieszanek.

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

Jedną z głównych zalet korzystania z miksin jest używanie kompozycji zamiast dziedziczenia i unikanie problemów z dziedziczeniem wielokrotnym (diamentowym). Dziedziczenie z więcej niż 1 testowej klasy bazowej prowadzi do problemu rombów, ale możesz mieszać i dopasowywać składanki, unikając tego problemu. Korzystanie z miksin nie eliminuje całkowicie dziedziczenia, ponieważ klasa testowa przeglądarki nadal musi dziedziczyć z elementu MixinBasedInProcessBrowserTest, ale na szczęście klasa podstawowa jest uniwersalna i lekka.

Zasoby