W tej lekcji dokończymy temat Singletona i poruszymy sobie temat, o którym wspomniałam w poprzedniej lekcji, czyli synchronizacja w Singletonie.
Uwaga: plik z projektem testowym, na którym pracujemy w lekcjach dotyczących POM wymaga uzyskania dostępu. Dostaniesz go tutaj.
Poruszymy temat sekcji krytycznej oraz bloku synchronizowanego. Zobaczysz też co daje dodanie przed zmienną słówka volatile. Gdy już zamkniemy temat Singletona wrócimy do konfiguracji i przerobimy tą klasę na taką, która nie używa Singletona i pokażę Ci jak to ładnie rozwiązać.
Dodatkowo posłużymy się adnotacją @TestInstance(Lifecycle.PER_CLASS) w JUnit 5. Adnotacja ta sprawi, że wszystkie metody testowe będą korzystały z tej samej instancji klasy testowej. Domyślnie, gdy nie dodamy tej adnotacji, nowa instancja jest tworzona dla każdej metody testowej. Oznacza to, że naszych testów nie będziemy mogli w przyszłości zrównoleglić na poziomie metod, czyli nie będziemy mogli uruchamiać testów w jednej klasie równolegle. Żeby to zrobić będziemy musieli przenieść inicjalizację konfiguracji z BeforeAll to BeforeEach. Natomiast nadal będziemy mogli uruchamiać testy równolegle na poziomie klas (czyli testy z kilku różnych klas testowych nadal będą mogły być uruchamiane równolegle).
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
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ę.
(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:
Cześć Ela, mam dwa pytania:
1) Czy klasy BaseTest i BasePage nie powinny być abstrakcyjne?
2) Czy te dwie poniższe linijki z klasy BaseTest można przenieść do metody @BeforeAll? Czy są jakieś przeciwskazania?
Halko! BasePage powinna być abstrakcyjna, zresztÄ [...] CaÅ‚ość odpowiedzi widoczna dla kursantów.
Dziękuję 🙂