utworzone przez Piotr Pelczar | Java, Testowanie, Tip and Tricks
Co powoduje, że testy w Spring są wolne?
Szybkość wykonywania testów ma kluczowy wpływ na to, jak szybko dostajemy feedback o poprawności wprowadzanej zmiany oraz jak szybko budowany jest projekt. To z kolei może spowolnić testowanie, a nawet wdrażanie w trybie Continuous Deployment.
W tym artykule omówię ogólne podejście do testowania. Podzielę się też najczęstszymi błędami, z którymi spotkałem się w projektach powodujące wolne działanie testów.
Dowiesz się też, co powoduje, że testy w Spring stają się wolne i jak poprawić sytuację w projekcie.
utworzone przez Piotr Pelczar | Java, Testowanie
Istnieją ogólnie przyjęte zasady, które warto stosować podczas pisania testów. Sprawiają, że testy są bardziej użyteczne w Twoim projekcie. Do każdej z tych zasad podam Ci konkretne techniki i wskazówki, aby je spełnić. Zasady mają akronim F.I.R.S.T. i kolejne litery oznaczają:
- Fast
- Isolated / Independent
- Repeatable
- Self-validating
- Timely
utworzone przez Piotr Pelczar | Java, Testowanie
Assert Object pattern to bardzo prosty wzorzec stosowany w kodzie testowym sprawiając, że są prostsze i bardziej czytelne. Koncentruje się na fazie sprawdzania obiektów ukrywając złożoność sprawdzenia.
Ideą wzorca Assert Object jest „owinięcie” testowanego obiektu w obiekt Assert i stworzenie metod sprawdzających. Dzięki temu możemy wyrażać biznesowe znaczenie.
utworzone przez Piotr Pelczar | Java, Testowanie
Być może uczestniczyłeś w dyskusjach – co mockować, a czego nie. Albo czym jest unit w unit testach?
Żeby coś porządnie przetestować to mockować, czy nie? Jakie są problemy z mockowaniem? Kiedy mockować, a kiedy nie? Co daje nam piramida testów w kontekście mockowania?
W tym wpisie podejdę do tematu z wielu stron.
utworzone przez Piotr Pelczar | Java, Testowanie
Kod testowy składa się z trzech części: 1. Przygotowanie (given / arrange), 2. Wykonanie (when / act), 3. Sprawdzenie (then / assert)
Przygotowanie danych do wykonania testu wymaga stworzenia obiektów, wypełnienia konstruktorów, dostarczenia danych. Może być trudne w przypadku bardziej złożonych obiektów.
Oprócz stworzenia obiektów możliwe, że należy doprowadzić je do konkretnego stanu przechodząc przez operacje.
Kod w fazie given się powtarza pomiędzy testami i zaciemnia test.
utworzone przez Piotr Pelczar | Java, Testowanie
Chyba każdy zna to uczucie. Chcemy coś przetestować, albo zbliża się release i … środowisko nie działa. Nasza aplikacja ma zależność – albo do bazy danych, albo do brokera wiadomości, albo do innej części infrastruktury. I co teraz? Jest jakaś metoda, aby z jednej strony wyizolować infrastrukturę, ale z drugiej nie mieć wszystkiego zamockowane, albo w implementacjach in-memory i jednak przetestować te interakcje?
W tym wpisie chciałbym polecić Twojej uwadze projekt Testcontainers. Podejdziemy do tematu z różnych perspektyw.