Blog (7)
Komentarze (49)
Recenzje (0)

JUnit Test z Netbeansem

@jullo89JUnit Test z Netbeansem30.01.2012 15:44

Jak mówiłem we wcześniejszym wpisie tak też robię – przedstawię, krótko czym są testy jednostkowe i jak je wykonać w środowisku NetBeans przy użyciu JUnit Test.

Testy jednostkowe służą do sprawdzania poprawności wykonywania takich struktur programowych, jakimi są metody i klasy. Najczęściej sprawdzamy jak wykonują się metody, porównując wyniki otrzymane po wykonaniu z oczekiwanymi wynikami. Jako osoby piszące programy musimy wiedzieć jaki rezultat powinniśmy otrzymać dla podanych przez nas danych wejściowych.

To krótki wstęp z teorii mamy za sobą. Przejdźmy dalej...

Czym jest JUnit Test? Narzędziem do tworzenia i wykonywania testów jednostkowych oprogramowania pisanego w języku Java... :P za krótko? Już dokładniej opisuję. Na JUnit test składa się biblioteka klas umożliwiająca wykonywanie specjalnie przygotowanych programów testowych. W IDE NetBeans, z którym JUnit jest zintegrowane, występuje kreator do generowania testów, które musimy sami uzupełnić o swój kod, ponieważ tworzy on tylko klasy testowe wraz z metodami. Kod w metodach musimy niestety sami uzupełnić :P.

Teraz warto wspomnieć o adnotacjach w klasach testowych. Są to między innymi:

[list]

[item]@Test – występuję przed każdą metodą testową,[/item] [item]@BeforeClass – występuje przed metodą, która jest wykonywana przed uruchomieniem testów. Można w niej utworzyć obiekt klasy testowej, zainicjalizować jej atrybuty itp..[/item] [item]@AfterClass – oznacza metodę, która ma być wywołana po zakończeniu wszystkich testów. Można w niej np. zamknąć połączenie z bazą danych, zapisać plik lub po prostu wypisać na konsoli „Hura” lub coś innego co jest niezbędne po wykonaniu testów.[/item] [item]@Before – metoda oznaczona tą adnotacją, będzie wywoływana przed wykonaniem każdej metody testowej.[/item] [item]@After – oznacza metodę, która ma być wywoływana po każdej metodzie testowej.[/item][/list]

Teraz druga ważna sprawa – asercje. To nic innego jak sprawdzenia poprawności. W JUnit Test dostępnych jest wiele a najczęściej stosowane (przynajmniej przeze mnie) to:"assertEquals", "assertNotNull", "assertTrue", "assertFalse" itp. . Możliwe jest także zgłoszenie błędu wywołując "fail". Czym są te sprawdzenia?? To dzięki nim możemy sprawdzić w prosty sposób czy nasza metoda wykonała się prawidłowo i zwraca wyniki zgodne z oczekiwanymi.

Nie rozumiesz tego jeszcze?? Nie przekonuje Ciebie to jeszcze i nadal wolisz wypisywać na konsoli stan obiektów podczas wykonania programu. Może przykład Ci pomoże to zrozumieć.

W NetBeans`ie tworzymy nowy projekt z prostą klasę „Square”, zawierającą jeden atrybut typu „double” - "side", klasę uzupełniam o konstruktory i metody dostępowe do atrybutu. Dodatkowo dodaję metodę „getSquere” zwracającą pole kwadratu.

Klasa Squere
Klasa Squere

Teraz pora na tworzenie testów JUnti, a więc klikamy prawym klawiszem na klasę jak to jest pokazane na poniższym rysunku i wybieramy Tools › Create Junit Tests.

Tworzenie testu
Tworzenie testu

Następnie wybieramy JUnit Test 4.

Wybór wersji JUnit
Wybór wersji JUnit
Generowanie klasy testowej
Generowanie klasy testowej

Podajemy nazwę klasy testowej i zaznaczamy pola potrzebne wg. naszego uznania i w zależności o tego jakie testy będziemy prowadzić. Na rysunku powyższym widzimy, że możemy testować metody publiczne, chronione i prywatne. Po zakończeniu tworzy nam się nowy pakiet ("Test Packages" ).

Wygenerowana klasa
Wygenerowana klasa

Otwieramy nasz nowo utworzony plik i widzimy wygenerowane metody.

Edycja kodu
Edycja kodu

Gdybyśmy teraz chcili uruchomić test, wszystkie metody testowe zakończyłyby się błędem ze względu na obecność linijki „fail("The test case is a prototype.");”. Pokazane to zostało na zrzucie poniżej razem ze sposobem uruchomienia testu.

Uruchamianie testów
Uruchamianie testów

Trzeba wprowadzić zmiany w teście: - dodajemy atrybut s klasy "Squere" ; -w konstruktorze tworzymy nowy obiekt klasy „Squere” i przypisujemy refernecje do atrybutu „s”; - w metodzie „setUp” ustawiamy bok kwadratu na 1; -uzupełniamy metody tak jak przedstawiono na zrzucie i uruchamiamy test;

Wynik testu - błąd
Wynik testu - błąd

Jak widać test się zakończył błędem w metodzie zwracającej długość boku, mimo że wydaje się ona być zaimplementowana poprawnie. I tak jest. Jeżeli ktoś nieuważnie śledził kod klasy testującej lub nie czytał ze zrozumieniem, to nie zwrócił uwagi na klasę oznaczoną adnotacją "@Before" , w której długość boku została zmieniona na 1.0, stąd ten błąd(w metodzie "testSetSide" należy jak rezultat oczekiwany ustawić 1.0). Ale chwila...w metodzie "testGetSquere" długość boku została ustawiona na -1.0 a metoda przeszła test.

Ponieważ (-1) * (-1) = 1. Proste i przedszkolak to wie. Problem leży w metodzie "setSide" klasy "Squere", ponieważ należy się sprawdzać czy długość nie jest ujemna, i albo przypisywać wartość bezwzględną lub wyrzucać wyjątek. Zmieniamy więc metodę "setSide" oraz metodę testującą "testGetSquere". Po uruchomieniu test wykonuje się poprawnie w 100 procentach.

Sukces
Sukces

Należy testy rozszerzyć i powtórzyć na różnych liczbach: np. "Double.MAX_VALUE" etc. , ponieważ do tego one służą. Dzięki JUnit testy jednostkowe stają się łatwiejsze. Przy dużych projektach nie ma potrzeby kompilowania całego programu (może zajmować to dużo czasu) i wypisywać stan obiektów podczas wykonania. Łatwiej jest zrobić oddzielną klasę i wykonać testy. Może (raczej na pewno ) podany przeze mnie prymitywny przykład nie przekona Wielu osób do korzystania z tego narzędzia, ale warto samemu spróbować, zobaczyć jak to działa.

Więcej może wyczytacie pod tym adresem natomiast dla osób korzystających z Eclipse przydatna może się okazać ta strona.

W następnym wpisie postaram się przybliżyć debugowanie w NetBeans`ie.

Pozdrawiam wszystkich, którzy przedarli się przez moje wypociny aż tutaj ;).

Wybrane dla Ciebie
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.