PJUG Kraków – Java 9 i JUnit 5

Na kolejnym meetupie Polish Java User Group w Krakowie same nowości – Java 9 i JUnit 5. Coraz więcej wiadomo o Javie 9 – tym razem można było zobaczyć przykłady kodu korzystającego z JDK 9 Early Access Release. Na drugim wykładzie dowiedziałam się jak będzie wyglądała nachodząca wersja jednej z najpopularniejszych bibliotek do testowania – JUnit.

Java 9

Spotkanie rozpoczęło się od prezentacji Rafała Leszko. Zaczął od pokazania bardzo sympatycznego licznika odliczającego czas do daty wydania JDK 9. Termin wydania Javy 9 był już przesuwany, więc będzie można na bieżąco sprawdzać status prac.

Jigsaw

Fundamentalną zmianą w Javie 9 będzie modularyzacja. Jigsaw to projekt, dzięki któremu będziemy mogli wydzielać i izolować moduły.

Architekci Javy doszli do wniosku, że umieszczanie wszystkich zależności w “jednym worku” szybko powoduje JAR Hell i nie do końca jest to dobry pomysł. Teraz nasze aplikacje będą mogły być kompilowane do modułów. Zależności których wymaga lub udostępnia moduł zdefiniujemy w plikach module-info.java. Zmniejszy się liczba zależności z JDK potrzebnych do uruchamiania każdego programu.

Ciekawostką jest również to, że pojawi się znany z języka C++ linker.

JShell

Nareszcie doczekamy się prostej, interaktywnej konsoli REPL znanej z jakich języków jak Scala, Ruby, Python itp. Dzięki niej możemy łatwo i szybko próbować nowych konstrukcji – ułatwia naukę języka.

Java 9 i JUnit 5 - REPL

Java Microbenchmarking Harness

Popularna biblioteka do testów wydajnościowych JMH zostanie wcielona do JDK 9.

Process API

Nadchodzi wsparcie dla obsługi procesów systemowych. Przykładowo dla pobrania PID wystarczy ProcessHandle.current().getPid().

Co jeszcze?

Java 9 zachowa kompatybilność wsteczną. Jestem bardzo ciekawa jak będzie wyglądało zarządzanie zależnościami w większych projektach. Jaka będzie odpowiedź takich narzędzi jak Maven czy Gradle?

Dodatkowo pojawi się wsparcie dla HTTP 2.0, a domyślnym algorytmem garbage collectora zostanie G1.

Niestety nadal nie doczekamy się JSON API. Wielu programistów (włącznie ze mną) na to liczyło, jednak Oracle argumentuje tą niedogodność brakiem funduszy. Swoje środki finansowe chce przeznaczyć na ważniejsze (według nich) funkcjonalności.

JUnit 5

Kolejną prezentację przedstawił Grzegorz Ziemoński. W prostych przykładach opisał co się zmieni w nowej wersji biblioteki do testów JUnit 5, która będzie wspierała Javę 8+.

Aktualnie wydana jest wersja alfa. Zgodnie z informacjami umieszczonymi na GitHubie projektu na koniec 2016 roku planowane jest wydanie wersji GA (General Availability – wersja stabilna z pełną funkcjonalnością).

Adnotacje

Większość adnotacji zmieni swoją nazwę, a wszystkie zmienią pakiet na org.junit.gen5.api. Oznacza to konieczność refaktoryzacji każdego projektu, który będzie chciał przejść z JUnit 4 na JUnit 5. Przykłady zmian:

  • @Before -> @BeforeEach
  • @After -> @AfterEach
  • @BeforeClass -> @BeforeAll
  • @AfterClass -> @AfterAll
  • @Ignore -> @Disable
  • @RunWith -> @ExtendWith

Pojawią się też nowe adnotacje m. in. @DisplayName, która pozwwoli nadawać testom przyjazne nazwy. Jak widać zmiany są kosmetyczne, jednak będą wymagały wysiłku przy migracji.

Asercje

Nowością będzie możliwość grupowania asercji, przykład z dokumentacji:

Kolejną nową asercją będzie expectThrows:

Zagnieżdżone testy

W tym przypadku kolejność ma znaczenie. Zagnieżdżając kolejne testy będzie można testować flow aplikacji jako kolejne kroki. Przykładowo tworząc na początku testu obiekt stosu w kolejnych testach będziemy mogli sprawdzać czy na początku jest on pusty, a kolejne zagnieżdżone testy będą sprawdzać czy obiekt odpowiednio się zachowuje.

Wstrzykiwanie zależności

W metodzie oznaczonej @BeforeEach będziemy mogli przygotować mocka wstrzykując go do metody jako parametr z adnotacją @InjectMock. Wstrzykując mocka analogicznie do każdej kolejnej metody będzie się odpowiednio zachowywał. Przykład z dokumentacji:

Podsumowanie

Prowadzący dobrze się przygotowali do swoich wykładów. Sposób przedstawienia też nie budził zastrzeżeń. Kolejny PJUG z którego jestem zadowolona, nie pozostaje nic innego jak brać udział w kolejnych.


Zdjęcie wyróżniające: FreeImages.com/siconHH-48848

Related Posts

Confitura 2016

W tym roku odbyła się jubileuszowa 10 edycja Confitury. Konferencję mogę szczerze polecić każdemu kto chce być na bieżąco z technologiami związanymi z JVM. Wykłady były na bardzo dobrym poziomie. Jak co roku poznałam kilka nowych osób i spotkałam znajomych, z którymi widuję się tylko na branżowych konferencjach. Luźna atmosfera pozwoliła na rozmowę z prelegentami.

Read More

Jak dodać Mavena do istniejącego projektu

W tym wpisie pokażę jak dodać Mavena do istniejącego projektu w kilku prostych krokach. Przykład będzie opierał się o projekt KiMage, którego źródła znajdziesz na GitHubie. Wykorzystam również środowisko IntelliJ IDEA 15.0.4.

Read More

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *