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, niż testy jednostkowe. Testy przeglądarki tworzą instancje i testują rozmaitych elementów interfejsu, a nie tylko testowaniu wyłącznie funkcji wejścia/wyjścia. tak jak w przypadku testów jednostkowych. Zintegrowane automatyczne testowanie jest ważne do symulowania całościową obsługę użytkowników. Podczas pisania testu przeglądarki często chcesz umożliwia programowe wykonywanie czynności konfiguracyjnych, które użytkownik może wykonać ręcznie. Aby Ci w tym pomóc, składanki to zestaw narzędzi do wykonywania prostych czynności testowanie przeglądarki w sposób wielokrotnego użytku.

Przykłady przydatnych składanek:

  • GuestUserMixin do testowania trybu incognito
  • UserPolicyMixin za podszywanie się pod zasady dotyczące użytkowników z serwera
  • FakeGaiaMixin za naśmiewanie się z odpowiedzi serwera Gaia

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

Fragment kodu poniżej umożliwia zalogowanie się na potrzeby testu jako gość. Ważne jest, sprawdź, czy wybrana funkcja działa w trybie incognito.

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

LoggedInUserMixin to wygodny sposób na zalogowanie się jako użytkownik Family Link: test. Jeśli Twoja funkcja wpływa na jakiekolwiek kwestie związane z nadzorem rodzicielskim, warto przetestować funkcję u nadzorowanych użytkowników. Możliwy błąd to zapominanie, że niepełnoletni użytkownicy mają wyłączony tryb incognito lub nie mogą zainstalować; bez zgody rodzica. LoggedInUserMixin to mieszanka złożona złożone z innych mieszanin.

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 miksów jest korzystanie z kompozycji zamiast dziedziczenie diamentów i unikanie problemów z wielokrotnym dziedziczeniem diamentów. Dziedziczenie z więcej niż 1 klasy bazowej testowej prowadzi do problemu diamentów, ale możesz mieszać i dopasowywać różne kombinacje, unikając tego problemu. Korzystanie z składanek nie całkowicie pozbywa się dziedziczenia, bo klasa testowa przeglądarki nadal musi dziedziczyć z elementu MixinBasedInProcessBrowserTest, ale na szczęście jest lekka i uniwersalna.

Zasoby