Testing in Java - Spring

Przetestuj swoją piramidę w Spring i JUnit5

Why am I doing this presentation

  • I want to teach how to create an easy testing environment that is simple for programmers

Abstract

#java/kotlin #junit5 #hamcrest #spring-boot-testing #testcontainers

Dla nas programistów najważniejsza jest możliwość szybkiego przetestowania naszych zmian. Najlepiej, jeżeli możemy to zrobić jednym kliknięciem, bez dodatkowej konfiguracji, czy stawiania ręcznie środowiska. Lubimy rozwiązania, które są proste i łatwo je rozbudowywać.

Na tej prezentacji przedstawie jak w łatwy sposób testować zmiany na różnym poziomie piramidy testowania, modyfikując jedynie pliki źródłowe naszego kodu, bez dotykania zewnętrznych skryptów. Dokonam przeglądu technologii jak: JUnit5, Hamcrest, Mockito, SpringBootTest, TestContainers; wobec testów jednostkowych, integracyjnych, systemowych, e2e.

Na tej prezentacji nauczysz się samodzielnie aplikować przedstawione techniki.

Do kogo kierowana jest ta prezentacja:

  • Programistów Kotlin/Java, którzy chcą nauczyć się nowych technik testowania
  • Testerów automatycznych, którzy chcą nauczyć się testować bliżej kodu

Prezentacja została stworzona na podstawie mojej własnej aplikacji lojalnościowej w formie modularnego monolitu, w którym wykorzystywałem te techniki, by móc poruszać się szybciej bez obawy o regres funkcjonalności.

Konspekt

W programie:

  • Testy Jednostkowe w JUnit5
    • Hamcrest - czyli fluent api w assercjach
    • Jak wielokrotnie rozszerzać nasze klasy testowe, czyli kilka słów o @ExtendWith
    • Twórz mocki za pomocą @Mock i komponuj z nich obiekty używając @InjectMocks
    • Jeden test, wiele danych testowych - @ParametrizedTest
  • Testy integracyjne
    • Użyj @SpringBootTest, by przenieść system do testów
    • @Autowired by wstrzykiwać klasy do testów
    • Podmieniaj obiekty do celów testowych w pojemniku - @Configuration i @Import na pomoc
  • Testy Systemowe
    • TestContainers postawi Ci infrastrukturę z dockera
    • @DynamicPropertySource - zmodyfikuj konfiguracje dla potrzeby testów
  • Testy E2E
    • @SpringBootTest(RandomWebPort) - postaw swoją aplikację w teście
    • WebClient - Testuj swoje zapytania
    • Bonus: Spring Contracts - wprowadzenie do mikroserwisów
Meta
09b0a377-7d85-42e7-94b1-f08db8a2159a