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
- Klasa testowa: CartTests
- Klasa testowa: BaseTest
- Klasa Page Object: CheckoutPage
- Klasa Page Object: CartPage
- Klasa Page Object: ProductPage
- Klasa Page Object: CategoryPage
- Klasa Page Object: BasePage
- Klasa Page Object: DemoFooterPage
- Klasa Page Object: HeaderPage
- Klasa Page Object: OrderReceivedPage
- Klasa: DriverFactory
- Enum: Browser
- Klasa: ConfigurationManager (wzorzec Singleton)
- Configuration.properties
Klasa testowa: PaymentsTests
Klasa testowa: CartTests
Klasa testowa: BaseTest
Klasa Page Object: CheckoutPage
Klasa Page Object: CartPage
Klasa Page Object: ProductPage
Klasa Page Object: CategoryPage
Klasa Page Object: BasePage
(czyli nasza stopka w POM)
Klasa Page Object: HeaderPage
Klasa Page Object: OrderReceivedPage
Klasa: DriverFactory
Enum: Browser
Klasa: ConfigurationManager (wzorzec Singleton)
Configuration.properties
Lista lekcji dotyczących budowy Frameworka:
Komentarze
Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.