Fast and stable MongoDB-based tests in Spring

Tradycyjne uruchamianie testowego MongoDB przez Flapdoodle Embedded Mongo kontra nowoczesne podejście z Testcontainers. Krótko o kontekstach w testach Springa przy okazji potwornego zużycia zasobów przez Flapdoodle. Mierzenie obciążenia systemu narzędziem sar i o użyteczności starego dobrego gnuplota. Artykuł po angielsku — zapraszam na Medium*.

* wejście z tego specjalnego linku nie zmniejszy waszego miesięcznego limitu darmowych artykułów w serwisie

3 najbardziej pouczające materiały z 2019

Styczeń to na różnych stronach i blogach okres publikowania podsumowań minionego roku. Miałem zamiar napisać artykuł w stylu „3 najlepsze książki programistyczne, jakie przeczytałem w 2019”, ale okazało się, że nie zbiorę trzech: musiałbym albo zaproponować rzeczy, z których nie byłem w pełni zadowolony, albo książki niezwiązane ściśle z branżą IT. Zamiast tego mogę zaproponować 3 rzeczy związane z programowaniem, ale niekoniecznie wydrukowane na papierze: jedną książkę, jedną publikację w sieci i jedno nagranie wideo.

Czytaj dalej 3 najbardziej pouczające materiały z 2019

Niebezpieczny isEmpty() z utili Springa

Wyobraźmy sobie, że znajdujemy w projekcie taki kod w Javie (lub prawie identyczny — w Kotlinie):

public void assertNoViolations(Collection<ConstraintViolation> violations) {
    if (!isEmpty(violations)) {
        throw new IllegalStateException("violates constraints: " + violations);
    }
}

Na oko — kod jak kod, robi co trzeba, nuda. Co może pójść nie tak?

Metoda zgodnie z oczekiwaniami bezproblemowo akceptuje nulla. Rzuca wyjątkiem, gdy przekażemy jej listę zawierającą contraint violations. Jest jeden szkopuł:

assertNoViolations(emptyList());
java.lang.IllegalStateException: violates constraints: []

Jak to jest możliwe?

Czytaj dalej Niebezpieczny isEmpty() z utili Springa