#automatyzacjaJava02 – stworzenie pierwszego projektu do testów typu maven

Witajcie ponownie !
W kolejnym wpisie dotyczącym pisania testów automatycznych w IntelliJ Idea pokaże wam jak stworzyć pierwszy projekt z naszym testem.
Zaczynamy odpalamy nasze IDE i tworzymy nowy projekt.

Nazywamy nasz projekt i klikamy Finish.

Wybieramy opcję Auto-Importu.

Tworzymy klasę do testów w zielonym folderze test – > java

Jeśli na studiach mieliście np. jave wiecie, że tam łopatologicznie programy wywołują się z metody main.
Tutaj będziemy używać adnotacji, lecz tych zapożyczonych z testów jednostkowych czyli JUnit.
A więc JUnit służy do testów jednostkowych – testy te należą do developerów. Zaś ich zmodyfikowana wersja dla testerów to popularny TestNG.
Zatem przystępujemy do działania !
Musimy stworzyć w lokacji – > \src\test\resources\ plik testng.xml

Tworzymy plik ale przechodzimy do naszej klasy.

Po poprawnym imporcie mamy zielone znaczki pojedyńczy i taki podwójny.
Pojedyńczy oznacza, że ta metoda w klasie jest uruchamialna.

System a raczej jego zapora zapyta nas czy zezwolić na dostęp do sieci i zezwalamy.

Po uruchomieniu pustej metody mamy wyniki 🙂

import org.testng.annotations.Test;

public class Test1 {
@Test
public void pierwszyTest()
{
}
}

Przechodzimy do pliku testng.xml

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="TestujemyAplikacjeWebowe">
    <test name="Nauczyciel">
        <classes>
            <class name="Test1"/>
        </classes>
    </test>
</suite>

Prosto i przyjemnie po co nam ten plik konfiguracyjny ?

A no jest nam potrzebny po to by odwoływać się do pliku testng.xml a nie np. klasy czy innego tego typu bęc.
Jeśli mamy np. 3 klasy z testami każdy dotyczy czego innego.
Wystarczy że do pliku testng.xml dodamy kolejne klasy i mamy naszą konfiguracje.

Nie napisaliśmy jeszcze żadnych testów ale już wiemy że potrzebujemy do tego driverów przeglądarek chrome lub friefox.
Pomocny w tym okaże się nie kto inny jak maven 🙂

Pom.xml czyli dependency

plik pom.xml znajduje się w głównym katalogu jeśli jest to projekt typu maven.

W skrócie maven to narzędzie automatyzujące a raczej ułatwiające budowę aplikacji, zaś plik pom.xml to informacja dot. tego w jaki sposób projekt jest budowany oraz jakich dependency czyli zależności od bibliotek zew. używa.
Dobra do naszych testów potrzebne nam dependency z gałęzi Selenium oto one :

https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver/3.141.59

https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver/3.141.59

Oba dependency dotyczą przeglądarek i na końcu widzicie numerek 3.1441.59 oznacza to wersję obsługiwanego drivera przeglądarki.
Wtedy np. jesli istnieje wersja drivera 3.100.00 może okazać się, że z takim dependancy nie będzie działać albo wcale, albo będzie działać z błędami.

Potrzebujemy jeszcze selenium java i opcjalnie do późniejszych kursów wykorzystanie selenium grida i pochodnych.

https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/3.141.59

https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver/3.141.59

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>TestujemyAplikacjeWebowe</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.0.0</version>
            <scope>test</scope>
        </dependency>
        <!-- tutaj sobie wstawiamy kolejne rzeczy.exe-->
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>3.141.59</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
    </dependencies>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
</project>

Wracamy do naszej klasy z testem Test1.java

https://chromedriver.chromium.org/
Z tej strony pobieramy stabilny najnowszy driver chroma.
Dla ułatwienia wypakowałem sobie ten plik .exe bezpośrednio na dysk c
Zatem ścieżka w property wygląda tak jak screen poniżej.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; //poprawnie zaimprtowało nam to z mavena
import org.testng.annotations.Test;

public class Test1 {
@Test
public void pierwszyTest()
    {
        System.setProperty("webdriver.chrome.driver", "C:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.google.pl");
        driver.findElement(By.xpath("//*[@name='q']")).sendKeys("pogoda warszawa");
        driver.findElement(By.xpath("//*[@name='btnK']")).click();
        driver.close();
    }
}
A oto pokaz możliwości tego co tu nakodziliśmy, prosty przyjemny test 🙂

Oczywiście najpierw budujecie projekt, ta ikona zielonego młotka, a potem po pomyślnym wybudowaniu, uruchamiacie testu.
Dlatego tak fajne jest budowanie z konfiguracji testng.xml

W następnym wpisie pobawimy się trochę bardziej w tym samym projekcie 🙂
Z pozdrowieniami !

Napisz komentarz