21
Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Maven2 oraz testy v2_3

Embed Size (px)

Citation preview

Page 1: Maven2 oraz testy v2_3

Budowa aplikacji webowej w

oparciu o Maven2

oraz

przykłady testów jednostkowych.

Wykonał Marcin Gadamer

Page 2: Maven2 oraz testy v2_3

Maven 2 – podstawowe informacje

� Apache Maven jest narzędziem automatyzującym budowę oprogramowania na platformę Java

� Wtyczki są pobierane automatycznie przy pierwszym wykorzystaniu

� Sposób budowy aplikacji zawarty jest w pliku POM (ang. Project Object Model)

� Apache Maven2 jest wydany na The Apache Software License, Version 2.0

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 3: Maven2 oraz testy v2_3

Maven 2 – źródła oraz instalacja

� Najnowsze źródła oraz szczegółowy opis instalacji można znaleść pod adresem:

� http://maven.apache.org/download.html

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 4: Maven2 oraz testy v2_3

Maven 2 – cykl Ŝycia

• validate - sprawdzenie, czy projekt jest poprawny i czy wszystkie niezbędne informacje zostały określone

• compile - kod źródłowy jest kompilowany• test - przeprowadzane są testy jednostkowe• package - budowana jest paczka dystrybucyjna• integration -test - zbudowany projekt umieszczany jest w • integration -test - zbudowany projekt umieszczany jest w środowisku testowym, gdzie przeprowadzane są testy integracyjne

• verify - sprawdzenie, czy paczka jest poprawna• install - paczka umieszczana jest w repozytorium lokalnym -

może być używana przez inne projekty jako zależność• deploy - paczka umieszczana jest w repozytorium zdalnym

(opublikowana)

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 5: Maven2 oraz testy v2_3

Maven 2 – Project Object Model

� POM, czyli Project Object Model, to dokument xmlkompleksowo opisujący projekt. POM nie tylko precyzuje szczegóły budowy produktu, ale też może przechowywać informacje o zespole programistów, zastosowanych systemach wspomagających rozwój oprogramowania.

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

� Szczegółowy opis tworzenia pliku pom.xml można znaleźć pod adresem:

� http://maven.apache.org/guides/introduction/introduction-to-the-pom.html

Page 6: Maven2 oraz testy v2_3

Maven 2 budowa podstawowej aplikacji

� Wydajemy polecenie:

mvn archetype:generate

-DgroupId=pl.gadamer.maven.firstApp

-DartifactId=FirstApp

-Dversion=1.0 -Dversion=1.0

-DarchetypeArtifactId=maven-archetype-quickstart

� I czekamy……Maven zajmie si ę resztą

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 7: Maven2 oraz testy v2_3

Maven 2 – budowa aplikacji webowej

cz I

� Wydajemy polecenie:mvn archetype:generate

-DgroupId=pl.gadamer.maven.firstApp

-DartifactId=FirstJ2EEApp

-Dversion=1.0

-DarchetypeArtifactId=maven-archetype-webapp-DarchetypeArtifactId=maven-archetype-webapp

� I czekamy…

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 8: Maven2 oraz testy v2_3

Maven 2 – budowa aplikacji webowej

cz II

� Stworzona zostanie taka struktura katalogów:

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 9: Maven2 oraz testy v2_3

Maven 2 - podsumowanie

� Apache Maven jest narzędziem automatyzującym budowę oprogramowania na platformę Java

� Zarządzanie zależnościami projektu w jednym pliku� Cały etap budowy aplikacji w jednym poleceniu� Cały etap budowy aplikacji w jednym poleceniu

� Kompilacja,� Testy,� Budowa paczki

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 10: Maven2 oraz testy v2_3

Testy jednostkowe – wszyscy testujemy

• Jak testujemy?• System.out.println / cout / loggery: log4j• debugujemy• przeklikujemy się

• problemy:• problemy:• jednorazowe, niepowtarzalne,• niemierzalne,• brak precyzyjnego określenia miejsca,• wystąpienia błędu w kodzie,• ręczne,• kosztowne czasowo,• oddzielone od procesu budowania projektu

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 11: Maven2 oraz testy v2_3

Rodzaje testów

� testy: � Jednostkowe,� Integracyjne,

� modułowe,� funkcjonalne, � systemowe, � systemowe,

� użytkownika,

� akceptacyjne,� itd.

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 12: Maven2 oraz testy v2_3

Testy jednostkowe – czyli gdzie?

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 13: Maven2 oraz testy v2_3

Testy – do czego one słuŜą?

� procent = czesc/calosc;

� x.getY().getZ().doSth();

� offset = +perPage;

� procent = czesc/0;

� x.getY().null.doSth();

� offset += perPage;� offset = +perPage;

� if (cos > cosInnego)

� offset += perPage;

� if (cos >= cosInnego)

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 14: Maven2 oraz testy v2_3

Testy – po co one w projekcie?

� znajdź błędy nim one cię znajdą,� bezproblemowy refaktoring,� szybsze tworzenie kodu,� spokojny sen,� dokumentacja,� dokumentacja,� wyższa jakość kodu,� testy jako sposób na design

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 15: Maven2 oraz testy v2_3

Test jednostkowy - cechy

� testujemy zachowania klas,

� wyniki testów mierzalne,� izolacja / niezależność

� od innych elementów

� prostota,� wydajność,� wysoka jakość,� automatyczne,� szybkie,

systemu� od innych testów

� szybkie,� powtarzalne,� włączone w proces

budowania projektu

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 16: Maven2 oraz testy v2_3

Co testować?

� wartości spodziewane� Kilka

� wartości brzegowe� dokładnie !

� wartości “tego na pewno nie wpisze user”

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 17: Maven2 oraz testy v2_3

Kiedy pisać test ?

� zawsze przed napisaniem kodu (TDD – Test-Driven Development)

� gdy pojawi się błąd,� gdy dodajemy nową funkcjonalność� gdy dodajemy nową funkcjonalność

� jeżeli masz trudność z napisaniem testu, to znaczy że napisałeś zły kod !

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 18: Maven2 oraz testy v2_3

TDD – najlepsze co moŜe być!

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 19: Maven2 oraz testy v2_3

Testy - obiekty współpracujące

� potrzebuję tylko żeby ten obiekt pomocniczy istniał (Dummy)

� potrzebuję żeby obiekt pomocniczy coś mi dał (Stub)� potrzebuje sprawdzić czy testowany kod wywołuje

odpowiednie metody obiektu pomocniczego (Mock / TestSpy)TestSpy)

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 20: Maven2 oraz testy v2_3

Podsumowanie testów

� testy jednostkowe testują klasy w IZOLACJI,� testy jednostkowe podstawą życia kodu,� testowanie stanu to banał,� testowanie zachowania bywa interesujące,� obiekty współpracujące� obiekty współpracujące

� dummy,� stuby,� mocki

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer

Page 21: Maven2 oraz testy v2_3

Dziękuję za uwagę

� Proszę o pytania/spostrzeżenia/uwagi

Marcin [email protected]

Maven2 + Testy jednostkowe Wykonał Marcin Gadamer