{"id":738,"date":"2021-12-03T14:00:29","date_gmt":"2021-12-03T14:00:29","guid":{"rendered":"https:\/\/testeroprogramowania.pl\/?p=738"},"modified":"2021-12-03T14:00:31","modified_gmt":"2021-12-03T14:00:31","slug":"testng-bibilioteka-do-uruchamiania-testow","status":"publish","type":"post","link":"https:\/\/testeroprogramowania.pl\/index.php\/2021\/12\/03\/testng-bibilioteka-do-uruchamiania-testow\/","title":{"rendered":"TestNG &#8211; bibilioteka do uruchamiania test\u00f3w"},"content":{"rendered":"\n<p style=\"text-align:left\">Z tego wpisu dowiesz si\u0119 jak stworzy\u0107 sw\u00f3j pierwszy projekt i jak doda\u0107 do niego bibliotek\u0119 TestNG. Nast\u0119pnie powiemy sobie o kilku adnotacjach, kt\u00f3re b\u0119d\u0105 nam niezb\u0119dne do napisania swojego pierwszego testu automatycznego. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"776\" src=\"https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/12\/board-361516_1280-1024x776.jpg\" alt=\"\" class=\"wp-image-739\" srcset=\"https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/12\/board-361516_1280-1024x776.jpg 1024w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/12\/board-361516_1280-300x227.jpg 300w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/12\/board-361516_1280-768x582.jpg 768w, https:\/\/testeroprogramowania.pl\/wp-content\/uploads\/2021\/12\/board-361516_1280.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"> Nowy projekt w Intellij<\/h2>\n\n\n\n<p style=\"text-align:left\">Otw\u00f3rz Intellij i wybierz opcj\u0119\u00a0<em><strong>Stw\u00f3rz nowy projekt \/ Create new project<\/strong><\/em>. W pierwszym oknie tworzenia nowego projektu upewnij si\u0119, \u017ce po lewej stronie jako typ zosta\u0142 wybrany<strong>\u00a0<\/strong><em><strong>Java<\/strong><\/em>. Jako\u00a0<em><strong>project SDK<\/strong><\/em>\u00a0wska\u017c \u015bcie\u017ck\u0119 do Javy, kt\u00f3r\u0105 powiniene\u015b mie\u0107 zainstalowan\u0105 po konfiguracji \u015brodowiska. Po wybraniu SDK i zaznaczeniu projektu jako Java klikamy na przycisk\u00a0<em><strong>Next\/Dalej<\/strong><\/em>. W nast\u0119pnym oknie wybieramy\u00a0<em><strong>Next\/Dalej<\/strong><\/em><br>i przechodzimy do miejsca w kt\u00f3rym mo\u017cemy nada\u0107 nazw\u0119 projektowi np.<em>\u00a0<strong>uitest<\/strong>,\u00a0<\/em>mo\u017cemy te\u017c zmodyfikowa\u0107 lokalizacj\u0119 projektu.<br>Po stworzeniu nowego projektu klikamy na zak\u0142adk\u0119\u00a0<em><strong>1:Projekt<\/strong><\/em>, aby pokaza\u0107 zawarto\u015b\u0107 projektu. Rozwijamy drzewko z projektem i klikamy prawym przyciskiem myszy na folder\u00a0<em><strong>src<\/strong><\/em>. Z rozwijanego menu wybieramy\u00a0<em><strong>New -> Java class<\/strong><\/em>\u00a0i nast\u0119pnie nadajemy mu nazw\u0119 np.\u00a0<em><strong>FirstTest<\/strong><\/em>\u00a0i potwierdzamy przyciskiem\u00a0<em><strong>Ok<\/strong><\/em>. Powoduje to stworzenie pierwszej klasy czyli &#8222;pojemnika&#8221; w kt\u00f3rym b\u0119dziemy mogli wykonywa\u0107 nasz test. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pierwsza metoda<\/h2>\n\n\n\n<p>Teraz spr\u00f3bujemy doda\u0107 nasz\u0105 pierwsz\u0105 metod\u0119. Metoda jest pewnego rodzaju blokiem kodu, kt\u00f3rego b\u0119dziemy mogli reu\u017cywa\u0107. Jak taki blok kodu mo\u017ce wygl\u0105da\u0107?<br><br>public void ourFirstTest() {}<\/p>\n\n\n\n<p>Nasza metoda ma nazw\u0119 ourFirstTest (nasz pierwszy test) i wewn\u0105trz {} b\u0119dziemy musieli umie\u015bci\u0107 kod, kt\u00f3ry b\u0119dzie wykonywa\u0142 nasz test w przegl\u0105darce internetowej. Dodajmy na razie kod, kt\u00f3ry wypisze cokolwiek na ekranie, aby zobaczy\u0107 jak to mo\u017ce wygl\u0105da\u0107.<br><br>public void ourFirstTest() {<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Otwieram przegl\u0105darke&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wprowadzam adres strony&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wprowadzam wyszukiwana fraz\u0119&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wybieram Enter&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wybieram pierwszy wynik&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Sprawdzam tytu\u0142 strony&#8221;);<br>}<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Dodanie TestNG do projektu<\/h2>\n\n\n\n<p>Jednym ze sposob\u00f3w uruchomienia kodu znajduj\u0105cego si\u0119 wewn\u0105trz metody jest oznaczenie jej jako metoda testowa. W takiej sytuacji Intellij rozpozna nasz\u0105 metod\u0119 jako testow\u0105<br>i b\u0119dziemy mogli j\u0105 uruchomi\u0107 za pomoc\u0105 znaczka &#8222;play&#8221; przy deklaracji metody.<br>Aby oznaczy\u0107 nasz kod jako testowy musimy skorzysta\u0107 z biblioteki TestNG. Jak to zrobi\u0107?\u00a0<br>Nale\u017cy doda\u0107 oznaczenie @Test nad metod\u0105. Po dodaniu tego oznaczenia nasz kod b\u0119dzie wygl\u0105da\u0142 nast\u0119puj\u0105co:<code><br><\/code>@Test<br>public void ourFirstTest() {<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Otwieram przegl\u0105darke&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wprowadzam adres strony&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wprowadzam wyszukiwana fraz\u0119&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wybieram Enter&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wybieram pierwszy wynik&#8221;);<br>\u00a0 \u00a0 \u00a0 System.out.println(&#8222;Sprawdzam tytu\u0142 strony&#8221;);<br>}<code><br><\/code>Mo\u017cesz zauwazy\u0107, \u017ce @Test pod\u015bwietla si\u0119 na czerwono. Aby to naprawi\u0107 ustaw kursor w \u015brodku @Test i wybierz czerwon\u0105 lampk\u0119. Z dost\u0119pnych opcji wybierz dodanie TestNG do classpath. Po dodaniu TestNG ca\u0142a klasa powinna wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n\n\n\n<p>import org.testng.annotations.Test;<\/p>\n\n\n\n<p>public class FirstTest { @Test<br>\u00a0 \u00a0 public void ourFirstTest() {<br>\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8222;Otwieram przegl\u0105darke&#8221;);<br>\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wprowadzam adres strony&#8221;);<br>\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wprowadzam wyszukiwan\u0105 fraz\u0119&#8221;);<br>\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wybieram Enter&#8221;);<br>\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8222;Wybieram pierwszy wynik&#8221;);<br>\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8222;Sprawdzam tytu\u0142 strony&#8221;);<br>\u00a0 \u00a0 }<br>}<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Uruchomienie metody<\/h2>\n\n\n\n<p> W celu uruchomienia metody naci\u015bnij na znaczek play znajduj\u0105cy si\u0119 przy metodzie i nast\u0119pnie wybierz opcj\u0119\u00a0<em>run ourFirstTest()<\/em>. Po wybraniu tej opcji kod powinien si\u0119 uruchomi\u0107 i na dole powinni\u015bmy zobaczy\u0107 rezultat dzia\u0142ania naszego programu w postaci wypisanych warto\u015bci na ekranie w kolejno\u015bci w jakiej zosta\u0142y zdefiniowane.<br>Mo\u017cemy wewn\u0105trz klasy mie\u0107 kilka metod oznaczonych jako testowe. Na przyk\u0142ad mo\u017cemy doda\u0107 kolejn\u0105:<br>@Test<br>public void ourSecondTest() {<br>\u00a0 \u00a0 System.out.println(&#8222;Jestem drugim testem&#8221;);<br>}<code><br><\/code>Uruchamiamy j\u0105 analogicznie do poprzedniej metody. Je\u015bli jednak chcieliby\u015bmy uruchomi\u0107 wszystkie metody testowe wewn\u0105trz danej klasy to wystarczy wybra\u0107 znaczek play znajduj\u0105cy si\u0119 obok nazwy klasy. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Metoda uruchamiana przed ka\u017cdym testem<\/h2>\n\n\n\n<p> Mo\u017cemy mie\u0107 sytuacj\u0119 w kt\u00f3rej b\u0119dziemy chcieli uruchamia\u0107 konkretny kawa\u0142ek kodu przed ka\u017cdym testem. Aby to zrobi\u0107 wystarczy \u017ce oznaczymy wybran\u0105 metod\u0105 adnotacj\u0105 @BeforeMethod. Taka metoda b\u0119dzie wykonywana przed ka\u017cd\u0105 metod\u0105 testow\u0105 znajduj\u0105c\u0105 si\u0119 wewn\u0105trz naszej klasy. Metoda wykonuj\u0105ca si\u0119 przed ka\u017cdym testem mo\u017ce wygl\u0105da\u0107 nast\u0119puj\u0105co:<code><br><\/code>@BeforeMethod<br>public void setup() {<br>\u00a0 \u00a0 System.out.println(&#8222;Otwieram przegl\u0105darke&#8221;);<br>}<br>Teraz gdy uruchomiy pojedynczy test wewn\u0105trz tej klasy to metoda setup uruchomi si\u0119 automatycznie przed tym testem. Je\u017celi skorzystamy ze znaczka play znajduj\u0105cego si\u0119 na poziomie klasy to nasza metoda setup uruchomi si\u0119 przed ka\u017cd\u0105 metod\u0105 oznaczon\u0105 adnotacj\u0105 @Test. Ta metoda s\u0142u\u017cy do wykonywania kawa\u0142ka kodu przygotowuj\u0105cego test. W naszym przypadku mo\u017ce to by\u0107 stworzenie przegl\u0105darki i otwieranie konkretnej strony internetowej. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Metoda uruchamiana po ka\u017cdym te\u015bcie<\/h2>\n\n\n\n<p>Analogicznie mo\u017cemy mie\u0107 sytuacj\u0119 w kt\u00f3rej b\u0119dziemy chcieli uruchamia\u0107 konkretny kawa\u0142ek kodu po ka\u017cdym te\u015bcie. Aby to zrobi\u0107 wystarczy, \u017ce oznaczymy wybran\u0105 metod\u0105 adnotacj\u0105 @AfterMethod. Taka metoda b\u0119dzie wykonywana po ka\u017cdej metodzie testowej znajduj\u0105cej si\u0119 wewn\u0105trz naszej klasy. Metoda wykonuj\u0105ca si\u0119 po ka\u017cdym te\u015bcie mo\u017ce wygl\u0105da\u0107 nast\u0119puj\u0105co:<br>@AfterMethod<br>public void tearDown() {<br>\u00a0 \u00a0 System.out.println(&#8222;Zamykam przegl\u0105darke&#8221;);<br>}<code><br><\/code>Teraz gdy uruchomiy pojedynczy test wewn\u0105trz tej klasy to metoda tearDown uruchomi si\u0119 automatycznie po kazdym tescie. Je\u017celi skorzystamy ze znaczka play znajduj\u0105cego si\u0119 na poziomie klasy to metoda tearDown uruchomi si\u0119 po ka\u017cdej metodzie oznaczonej adnotacj\u0105 @Test. Ta metoda s\u0142u\u017cy do wykonywania kawa\u0142ka kodu czyszcz\u0105cego \u015brodowisko po wykonaniu testu. W naszym przypadku mo\u017ce to by\u0107 zamkni\u0119cie przegl\u0105darki. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p style=\"text-align:left\">Mam nadziej\u0119, \u017ce uda\u0142o Ci si\u0119 stworzy\u0107 sw\u00f3j pierwszy projekt oraz doda\u0107 bibliotek\u0119 TestNG do projektu. Adnotacje, kt\u00f3re pokaza\u0142em w tej wiadomo\u015bci pochodz\u0105 z biblioteki TestNG i umo\u017cliwiaj\u0105 nam uruchomienie odpowiednich kawa\u0142k\u00f3w kodu za pomoc\u0105 znaczka play w intelij. Poznali\u015bmy r\u00f3wnie\u017c adnotacje takie jak @BeforeMethod i @AfterMethod kt\u00f3re daj\u0105 nam mo\u017cliwo\u015b\u0107 mi\u0119dzy innymi przygotowania przegl\u0105darki do pracy i jej zamkni\u0119cia po wykonaniu ka\u017cdego testu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Z tego wpisu dowiesz si\u0119 jak stworzy\u0107 sw\u00f3j pierwszy projekt i jak doda\u0107 do niego bibliotek\u0119 TestNG. Nast\u0119pnie powiemy sobie o kilku adnotacjach, kt\u00f3re b\u0119d\u0105 nam niezb\u0119dne do napisania swojego pierwszego testu automatycznego. Nowy projekt w Intellij Otw\u00f3rz Intellij i wybierz opcj\u0119\u00a0Stw\u00f3rz nowy projekt \/ Create new project. W pierwszym [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":739,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts\/738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/comments?post=738"}],"version-history":[{"count":3,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts\/738\/revisions"}],"predecessor-version":[{"id":742,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/posts\/738\/revisions\/742"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/media\/739"}],"wp:attachment":[{"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/media?parent=738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/categories?post=738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/testeroprogramowania.pl\/index.php\/wp-json\/wp\/v2\/tags?post=738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}