Mikroserwisy, wszędzie mikroserwisy. Tylko jak testować to w praktyce? Podejść jest wiele, jedno z nich to testy integracyjne. W ramach teorii tak zwanego "black box testing" nie powinniśmy ingerować w wewnętrzne komponenty systemu a jedynie weryfikować wejście i wyjście z systemu.
Oczywiście jest to łatwe w teorii, nieco trudniejsze w praktyce. Jak więc poradzić sobie z wyzwaniem pt. po wywołaniu HTTP powinien być komunikat w Kafce? Na przykład przy pomocy biblioteki testcontainers:
https://www.testcontainers.org/, która pozwala uruchomić wasz serwis oraz jego zależności w postaci kontenerów. Naturalnie symulowanie całego klastra np. kubernetes mija się z celem, natomiast z powodzeniem można dorzucić przynajmniej tę część infrastruktury, która zapewnia komunikację.
Testcontainers poza podstawową funkcjonalnością pozwalającą na uruchomienie dowolnego kontenera z kodu Javy, dostarcza również moduły dla PostgreSQL, MySQL, Cassandra czy też ElasticSearch - lista kontenerów do przejrzenia:
https://mvnrepository.com/artifact/org.testcontainers. Z ciekawszych rzeczy - można uruchomić z testem również selenium, które działa w kontenerze, bez konieczności aranżowania wszystkich zależności systemowych potrzebnych do uruchomienia przeglądarki. Brzmi świetnie, nieprawdaż?
#java #docker