Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

Selenium 84. Wzorzec Singleton na przykładzie konfiguracji

Dzisiaj będziemy kontynuować temat konfiguracji. Tym razem jednak wykorzystamy wzorzec Singleton, żeby móc korzystać z danych zawartych w konfiguracji z dowolnego miejsca w testach. Zabezpieczymy się również przez stworzeniem kilku instancji klasy obsługującej konfigurację.

Uwaga: plik z projektem testowym, na którym pracujemy w lekcjach dotyczących POM wymaga uzyskania dostępu. Dostaniesz go tutaj.

Dwa podstawowe założenia wzorca Singleton to zapewnienie, że będzie występowała tylko jedna instancja danej klasy oraz zapewnienie globalnego punktu dostępu do niej. Jak dokładnie sobie taką klasę zbudować zobaczysz na filmie, ale tutaj chcę podkreślić, że korzystanie z tego wzorca (który bywa też przez niektórych nazywany antywzorcem) może być na dłuższą metę kłopotliwe, dlatego ograniczyłabym jego użycie właśnie do konfiguracji. Dużo trudniej utrzymuje się kod, który zawiera takie rozwiązanie, szczególnie, gdy jeszcze nie czujemy się pewnie w Javie.

Ponadto, ten wzorzec łamie kilka zasad, nie można go na przykład rozszerzać. Łamie także zasadę jednej odpowiedzialności, bo w naszym wypadku po pierwsze pozwala na sprawne pobieranie informacji z konfiguracji ale robi też drugą rzecz – zarządza swoją instancją. Dodatkowo taka klasa jest jakby zamiennikiem zmiennej globalnej, a takich zmiennych powinno się unikać.

Zaktualizowane klasy

Klasa testowa: PaymentsTests

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa testowa: CartTests

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa testowa: BaseTest

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: CheckoutPage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: CartPage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: ProductPage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: CategoryPage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: BasePage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: DemoFooterPage

(czyli nasza stopka w POM)

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: HeaderPage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa Page Object: OrderReceivedPage

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa: DriverFactory

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Enum: Browser

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Klasa: ConfigurationManager (wzorzec Singleton)

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Configuration.properties

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Lista lekcji dotyczących budowy Frameworka:

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.