Tworzenie testów automatycznych jest możliwe na różnych platformach. Do tej pory przedstawialiśmy konfigurację środowiska i uruchomienie testów na komputerze z systemem Windows
, ale w zależności od osobistych preferencji lub dostępności odpowiednich maszyn z takim samym powodzeniem można pracować na urządzeniach pracujących pod kontrolą systemu Linux
lub macOS
. W tym artykule przedstawię skróconą instrukcję przygotowania środowiska do automatyzacji testów aplikacji internetowych w technologii Java
i Selenium WebDriver
na ostatnim z wymienionych systemów.
Celem tego artykułu jest pokrycie tego samego zakresu, który dla systemu Windows
ze szczegółami został opisany w serii artykułów:
- Narzędzia - system kontroli wersji Git i emulator konsoli Cmder
- Narzędzia - Selenium i przeglądarki internetowe
- Narzędzia - Java, Gradle i IntelliJ
Przygotowanie środowiska na macOS
jest pod pewnymi względami łatwiejsze niż w Windows
i powinno zająć mniej czasu, stąd umieszczenie wszystkich elementów w jednym tekście wydaje się rozsądnym posunięciem.
Manager pakietów
Jeśli tylko to możliwe, warto instalować oprogramowanie przy pomocy tak zwanego managera pakietów. Jest to rozwiązanie powszechnie stosowane na przykład na platformie Linux
, gdzie tego typu narzędzie jest wbudowane i gotowe do użycia zaraz po instalacji systemu. macOS
niestety nie ma domyślnie zainstalowanego takiego oprogramowania, ale społeczność open-source świetnie nadrobiła ten brak, tworząc Homebrew
, nazywany “brakującym managerem pakietów dla macOS”.
Instrukcja instalacji jest opisana na stronie projektu i sprowadza się do wykonania w terminalu skryptu Ruby:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Emulator terminala
Emulator terminala, który umożliwia wykonywanie poleceń przy użyciu interfejsu linii komend (ang. command line interface, CLI), jest nieodzownym elementem środowiska w systemach rodziny Unix. Funkcjonalności wbudowanej w macOS
aplikacji Terminal
pozostawiają trochę do życzenia, dlatego w celu usprawnienia pracy polecam zastąpienie jej narzędziem iTerm2
. Można go pobrać ze strony projektu i zainstalować przenosząc do folderu Applications
. Inną metodą instalacji jest wykorzystanie wspomnianego wyżej Homebrew
przez wywołanie w domyślnym terminalu polecenia:
brew cask install iterm2
Git
Git
to rozproszony system kontroli wersji, popularny między innymi dzięki dużej wydajności, prostej konstrukcji, czy też silnemu wsparciu dla modelu gałęziowego (ang. branching model). Git
jest darmowy, a na jego upowszechnienie wpłynęła dostępność serwisów takich jak GitHub
, BitBucket
czy GitLab
, które wspierają hosting projektów opartych o Git
, w tym również za darmo.
Instalacja Git
Git dla systemu operacyjnego macOS
możesz pobrać ze strony projektu w podstaci pliku dmg
. Instalacja nie powinna sprawić problemów, możesz podczas niej skorzystać z domyślnych ustawień.
Pierwszą rzeczą, którą powinieneś zrobić po instalacji Git
, jest skonfigurowanie nazwy użytkownika oraz adresu email przy pomocy komendy git config
. Dzięki temu zostaniesz automatycznie oznaczony jako autor wszystkich fragmentów kodu, które dodasz do swoich projektów (czyli mówiąc językiem Git
commitów dodanych do repozytoriów). Aby zmienić te ustawienia, uruchom iTerm
, a następnie wykonaj najstępujące komendy:
git config --global user.name "Jan Nowak"
git config --global user.email [email protected]
Tip: Bardzo dobrym źródłem wiedzy na temat systemu
Git
jest książka “Pro Git”, dostępna za darmo na stronie projektu. Warto o niej pamiętać podczas nauki.
Selenium
Automatyzacja testów aplikacji internetowych odbywa się zazwyczaj z wykorzystaniem biblioteki Selenium WebDriver
. To zbiór narzędzi i bibliotek wspierających automatyzację przeglądarek internetowych. Dostarcza podstawy do implementacji specyfikacji W3C WebDriver. Automatyzacja przeglądarek jest możliwa dzięki WebDriver API
, który jest protokołem definiującym niezależny od technologii interfejs do ich kontrolowania. Każdy z tego typu programów jest wspierany przez odpowiednią implementację WebDriver API
, nazywaną sterownikiem
(driver
), która do komunikacji z przeglądarką używa API
dostarczonego przez jej producenta. Przykładami takich sterowników są geckodriver
dla Mozilla Firefox
oraz chromedriver
dla Google Chrome
.
Sterowniki przeglądarek
Tip: Jeżeli w swoim projekcie zamierzasz używać biblioteki
WebDriverManager
do zarządzania sterownikami, manualna instalacja sterowników nie jest konieczna. Przykładowy szablon projektu wykorzystujący automatyczne zarządzanie sterownikami dostępny jest tutaj: https://gitlab.com/qalabs/blog/junit5-selenium-gradle-template
Większość sterowników wymaga niezależnej aplikacji do komunikacji z przeglądarką intenetową. Sterowniki możesz pobrać ze stron ich twórców.
- Chrome Driver dla Google Chrome - https://chromedriver.storage.googleapis.com/index.html
- Gecko Driver dla Firefox - https://github.com/mozilla/geckodriver/releases
Zwróć uwagę, aby pobrać pliki dla systemu macOS
. Zapisz je w wybranym katalogu (np. selenium-dev/drivers
). Oba sterowniki są umieszczone w skompresowanych archiwach, które można rozpakować poleceniem z terminala. W tym celu uruchom iTerm2
i wykonaj poniższe komendy. Przy czym chromedriver
jest umieszczony w archiwum zip
, natomiast geckodriver
w archiwum tar.gz
, więc polecenia będą się nieco różnić. Zwróć też uwagę na podanie aktualnego numeru wersji w nazwie pliku z geckodriverem
:
unzip chromedriver_mac64.zip
tar xvfz geckodriver-v0.20.1-macos.tar.gz
Aby Selenium WebDriver
mogło działać poprawnie, będziesz musiał podać mu lokalizację właściwego sterownika przeglądarki.
Tip: Lokalizację sterownika można wskazać przez umieszczenie go w katalogu dostępnym z poziomu zmiennej systemowej
PATH
lub przez parametr uruchomieniaSelenium WebDriver
.
Tip: W większości przypadków sterowniki tworzone są niezależnie od przeglądarek internetowych. Dlatego musisz zwrócić uwagę na informację o wersji przeglądarki, która jest wspierana przez dany sterownik, zamieszczoną na stronie internetowej sterownika.
Jeżeli już pobrałeś i rozpakowałeś wszystkie sterowniki, to upewnij się, że katalog, który je zawiera, jest dostępny z poziomu zmiennej systemowej PATH
.
Jak dodać katalog do PATH
w macOS?
Katalog można dodać do PATH
przy pomocy polecenia:
export PATH=$PATH:/sciezka/do/katalogu
Jeśli wykonasz taką komendę z linii poleceń, to dopisany katalog będzie dostępny w zmiennej PATH
tylko w trakcie trwania aktualnej sesji terminala. Po ponownym otwarciu zostanie przywrócona wcześniejsza wartość. Żeby katalog dodać do PATH
na stałe, trzeba przy pomocy swojego ulubionego edytora zmodyfikować plik .bash_profile
znajdujący się w katalogu domowym użytkownika i dodać wyżej wymienione polecenie na końcu tego pliku. Następnie, po zapisaniu pliku, należy ponownie otworzyć terminal lub wykonać komendę:
source ~/.bash_profile
Jeśli konfiguracja zmiennej PATH
jest poprawna, to geckodriver
pownien się uruchomić, niezależnie od tego, w którym katalogu wpisałeś komendę. Jeśli na ekranie pojawią się komunikaty podobne do tych poniżej, oznacza to, że geckodriver
uruchomił się prawidłowo i nasłuchuje na komendy na porcie 4444
. W analogiczny sposób sprawdź, czy pozostałe sterowniki również uruchamiają się bez przeszkód.
1 | $ geckodriver |
Java Development Kit (JDK)
Java
jest jednym z najpopularniejszych języków programowania, cechującym się obiektowością, silnym typowaniem, przenośnością oraz prostotą. Programy napisane w języku Java
kompilowane są do tzw. bytecode’u, a następnie uruchamiane są w tak zwanej wirtualnej maszynie, w dowolnym systemie operacyjnym.
Java SE Development Kit
zawiera środowisko uruchomieniowe Java Runtime Environment (JRE)
oraz narzędzia do tworzenia, debuggowania i monitorowania aplikacji stworzonych w języku Java
.
Wraz z wydaniem wersji Java 11, Oracle zmieniło zasady licencjonowania dostarczanego przez siebie JDK:
(Oracle) OpenJDK
- używa istniejącej licencji GPLv2+CE i jest darmowa również do użytku komercyjnego. Pobierz binaria ze strony: https://jdk.java.net/12Oracle JDK
- używa płatnej komerycyjnej licencji, darmowa podczas developmentu. Instalator dostępny jest na stronie: https://www.oracle.com/technetwork/java/javase/downloads/index.html
Każda z licencji posiada różne binaria, ale różnice są kosmetyczne i nieodczuwalne w trakcie pracy.
Instalacja OpenJDK
Najprostszym i najefektywniejszym sposobem instalacji OpenJDK jest wykorzystanie narzędzia brew
. Otwórz terminal i wykonaj polecenie:
$ brew cask install java
Zweryfikuj poprawność instalacji używając polecenia:
$ javac -version
javac 12.0.1
Instalator nie ustawia zmiennej środowiskowej JAVA_HOME
, zatem należy to wykonać ręcznie (jest to krok zalecany, jednak nie wymagany).
Sprawdź miejsce instalacji OpenJDK:
$ brew cask info java
==> Name
OpenJDK Java Development Kit
==> Artifacts
jdk-12.0.1.jdk -> /Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk (Generic Artifact)
Do ~/.bash_profile
dodaj komendę:
export JAVA_HOME=/sciezka/do/katalogu/openjdk/Contents/Home
Uruchom ponownie terminal i wykonaj polecenie:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/openjdk-12.0.1.jdk/Contents/Home
Instalacja Oracle JDK
Oracle JDK możesz pobrać ze strony Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html. Pobierz i zainstaluj najnowszą wersję platformy.
Aby sprawdzić, czy instalacja przebiegła prawidłowo, uruchom wiersz poleceń i wpisz:
$ javac -version
javac 12.0.1
Dodatkowo, możesz upewnić się, że zmienna środowiskowa JAVA_HOME
została poprawnie ustawiona podczas instalacji:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-12.0.1.jdk/Contents/Home/
Gradle
Gradle
to otwartoźródłowe (ang. open-source) narzędzie do automatyzacji procesu budowania aplikacji, w tym do zarządzania zależnościami, który używa języka domenowego Groovy
lub Kotlin
do tworzenia konfiguracji projektu.
Gradle
jest wspierany przez większość środowisk programistycznych, może być również z łatwością uruchamiany z wiersza poleceń lub poprzez serwer ciągłej integracji (ang. continuous integration, CI).
Gradle
zdobył popularność między innymi dzięki łatwej i rozszerzalnej konfiguracji, szybkości działania (przyrostowe budowanie aplikacji, możliwość równoległego wykonywania zadań) oraz wsparciu wielu języków i technologii (np.: Java
, C++
, Groovy
).
Tip: Tworząc dowolny, nawet najbardziej podstawowy projekt w technologii
Java
, zawsze używaj narzędzia do automatyzacji procesu budowania aplikacji. Najpopularniejsze narzędzia dla projektówJava
toGradle
iMaven
. Przeczytaj o różnicach tutaj: https://gradle.org/maven-vs-gradle
Instalacja Gradle
z wykorzystaniem Homebrew
sprowadza się do wykonania w terminalu polecenia:
$ brew install gradle
W celu przetestowania poprawności instalacji Gradle
, w wierszu poleceń wykonaj komendę:
gradle --version
Aby sprawdzić lokalizację binariów Gradle
po instalacji, wykonaj polecenie:
$ brew info gradle
Konfiguracja projektu opartego o Java
, JUnit 5
i Gradle
W celu weryfikacji poprawności konfiguracji środowiska, wykorzystaj szablon projektu junit5-gradle-template
.
Uruchom
iTerm2
Sklonuj projekt:
git clone https://gitlab.com/qalabs/blog/junit5-gradle-template.git
Przejdź do katalogu projektu (
junit5-gradle-template
) i wykonaj polecenie:gradle clean test
Komenda uruchomi testy z użyciem Gradle
, pobierając wcześniej niezbędne zależności oraz kompilując kod projektu. Jeśli wszystko zostało poprawnie skonfigurowane, wykona się prosty test:
1 | Starting a Gradle Daemon (subsequent builds will be faster) |
Tip: Alternatywnie możesz wykonać polecenie
./gradlew clean test
, ponieważ projekt zawiera tak zwanyGradle Wrapper
, który lokalnie (w katalogu projektu) zainstaluje zależnościGradle
wymagane do jego uruchomienia.
Instalacja IntelliJ Community
IntelliJ IDEA
to profesjonalne środowisko programistyczne oferujące między innymi:
- rozbudowany edytor z kolorowaniem składni, analizą kodu i wykrywaniem błędów, podpowiadaniem składni,
- ergonomiczny interfejs użytkownika, z zaawansowanymi funkcjami wyszukiwania, wsparciem skrótów klawiszowych,
- zaawansowany debugger,
- wsparcie dla systemów kontroli wersji, w tym oczywiście wsparcie dla
Git
, - wsparcie narzędzi do budowania projektów takich jak
Gradle
czyMaven
, - wsparcie dla najnowszych frameworków i biblitek, w tym wsparcie dla
JUnit 5
.
IntelliJ
występuje w dwóch wersjach: Ultimate
(komercyjna) i Community
(open-source). Wersja Community
jest całkowicie wystarczająca do projektów nie używających frameworków i technologii dla aplikacji klasy enterprise. Doskonale zatem sprawdzi się w projektach opartych o standardową Javę
i Selenium WebDriver
.
Konfiguracja Java SDK
Po instalacji i pierwszym uruchomieniu IntelliJ
masz możliwość skonfigurowania domyślnego Java SE Development Kit
dla nowych projektów. W tym celu w oknie powitalnym wybierz opcję Configure | Project Defaults | Project Structure
. Przejdź do menu Platform Settings | SDKs
i dodaj nowe SDK
(+
) wskazując na katalog zainstalowanego wcześniej Java SE Development Kit
(ten ze zmiennej JAVA_HOME
):
Tip: SDK = Software Development Kit, JDK = Java SE Development Kit. JDK jest podzbiorem SDK odpowiedzialnym za tworzenie i uruchamianie aplikacji.
Mając skonfigurowane co najmniej jedno SDK
, możesz je wskazać jako domyślne dla projektów. Zrobisz to w menu Project Settings | Project
. Nie zapominij o zmianie poziomu wspieranego języka. JUnit 5
wymaga conajmniej Java 8
, zatem w opcji wyboru Project language level
wskaż SDK default
.
Tip: Nie jesteś pewien, czy
IntelliJ
jest dla Ciebie? Możesz pracować zEclipse
lubNetbeans
. Ja przez wiele lat pracowałem zEclipse
, ale dzisiaj nie wyborażam sobie innegoIDE
niżIntelliJ
do tworzenia projektów opartych oJVM
.
Import projektu do IntelliJ
Aby zaimportować projekt w IntelliJ
, wybierz opcję File | Open
i wskaż plik gradle.build
. Otwórz plik jako projekt i poczekaj chwilę, aż zaimportuje się wraz ze wszystkimi zależnościami.
W IntelliJ
otwórz plik pl.qalabs.blog.junit5.JUnit5Tests
i uruchom test helloJUnit5
, klikając lub używając skrótu control+option+R
:
Tip: W
IntelliJ
, pracując w kontekście projektu, masz możliwość konfiguracji ustawień projektu dostępnych za pomocą skrótucommand+;
lub w menuFile | Project Structure
oraz ustawień domyślnych dla wszystkich nowych projektów dostępnych w menuFile | Other Settings
.
Dalsze kroki z IntelliJ
Najlepszym źródłem wiedzy do nauki IntelliJ
jest… oficjalna dokumentacja. Znajdziesz w niej wiele przydatnych informacji, które pomogą Ci rozpocząć efektywną pracę z tym środowiskiem.
- Rozpocznij od tego rozdziału: https://www.jetbrains.com/help/idea/discover-IntelliJ-idea.html. Znajdziesz tutaj najistotniejsze funkcje
IntelliJ
w pigułce. Jedyną sekcją, którą możesz pominąć, to Application Servers. - Podstawy uzywania
IntelliJ
w projektachJava
: https://www.jetbrains.com/help/idea/creating-and-running-your-first-java-application.html. Możesz pominąć rozdziały: Packaging the application in a JAR i Running the packaged application - Podstawy debuggowania aplikacji w
IntelliJ
: https://www.jetbrains.com/help/idea/debugging-your-first-java-application.html - Naucz się używać podstawowych skrótów klawiszowych. Pomogą one w efektywnej pracy: https://www.jetbrains.com/help/idea/mastering-keyboard-shortcuts.html.