Solvro Talks - Testy Jednostkowe

Kształt kółka
Kształt półkola
Ksztalt koła dekoracyjny
Solvro Talks - Testy Jednostkowe

Solvro Talks - Testy Jednostkowe

Czym są testy jednostkowe?

Testy jednostkowe to technika testowania oprogramowania, w której najmniejsze, izolowane fragmenty kodu (zwane jednostkami) są sprawdzane pod kątem poprawności działania. Jednostkami mogą być metody, klasy, moduły lub pakiety. Kluczowe cechy testów jednostkowych to automatyczność i powtarzalność, co oznacza, że mogą być uruchamiane wielokrotnie bez zmiany wyników, oraz szybkość – pozwalają na natychmiastowy feedback
na temat działania kodu.

Korzyści z testów jednostkowych

Testy jednostkowe przynoszą szereg korzyści:
● Łatwiejsze zarządzanie kodem: Kod testowany jednostkowo jest zazwyczaj
łatwiejszy do utrzymania i modyfikacji.
● Mniejsza liczba błędów: Regularne testowanie zmniejsza liczbę błędów w kodzie
podczas jego rozwoju.
● Ochrona przed powtarzalnymi błędami: Testy pomagają wykrywać i eliminować
małe, powtarzalne błędy, które mogą wpływać na stabilność systemu.

Jak wygląda test jednostkowy?

Dobry test jednostkowy powinien:
● Mieć odpowiednią nazwę, na przykład shouldReturnListOfEvenNumbers czy
shouldReturnListOfUniqueNumbers.
● Być zgodny z konwencją given/when/then, która pomaga w strukturalnym pisaniu
testów.
● Być niezależny od innych testów.
● Mieć odpowiednią nazwę klasy testowej z sufixem Test i znajdować się w
odpowiednim pakiecie.

Co powinniśmy testować?

Testy jednostkowe powinny obejmować:
● Instrukcje warunkowe: Takie jak if/else i switch.
● Wyrażenia logiczne: Operacje logiczne używane w kodzie.
● Operatory ternarne: Na przykład zmienna ? "true" : "false".

Nie testujemy:

● Metod prywatnych: Testy jednostkowe dotyczą wyłącznie metod publicznych.
● Getterów i setterów: Ponieważ zazwyczaj są one trywialne i ich testowanie nie
przynosi wartości dodanej.

Przykład testu jednostkowego:

import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertFalse;
import org.junit.jupiter.api.Test;

public class NumberUtilsTest {

   @Test
   public void shouldReturnTrueWhenNumberIsEven() {
      // given
      int number = 4;

      // when
      boolean result = NumberUtils.isEven(number);

     // then
     assertTrue(result);
   }

   @Test
   public void shouldReturnFalseWhenNumberIsOdd() {
      // given
      int number = 5;

      // when
      boolean result = NumberUtils.isEven(number);

      // then
      assertFalse(result);
   }
}


   class NumberUtils {
      public static boolean isEven(int number) {
         return number % 2 == 0;
       }
}

Techniki pisania testów jednostkowych

Istnieją dwie główne techniki pisania testów jednostkowych:
● Code first: Tradycyjne podejście, w którym najpierw piszemy kod, a potem testy. Często stosowane w testach integracyjnych.
● TDD (Test Driven Development): Najpierw piszemy test, potem kod, który ma przejść ten test, a następnie refaktorujemy kod. Proces ten przebiega w cyklu RED -> GREEN -> REFACTOR.

Zrzut Ekranu 2024 07 16 121613

Mockowanie i jego znaczenie

Mockowanie to technika, która polega na zastępowaniu rzeczywistych obiektów testowanych przez ich puste implementacje (mocki). Pozwala to na:
● Rejestrowanie interakcji: Wszystkie interakcje z mockiem są rejestrowane do
późniejszej weryfikacji.
● Sprawdzanie zwracanych wartości: Możliwość ustawienia, co dana metoda ma zwracać w teście. Biblioteka Mockito w Javie jest popularnym narzędziem do tworzenia mocków i ułatwia weryfikację interakcji między obiektami.

Gdzie unikać testów jednostkowych?

Niektóre projekty nie wymagają testów jednostkowych, na przykład:
● Prototypy: Projekty o krótkim czasie życia, które nie wymagają intensywnego
testowania.
● Game Development: Gry często wymagają bardziej złożonych testów
integracyjnych i manualnych.
● UI/UX: Testy interfejsu użytkownika zazwyczaj nie są odpowiednie do testów
jednostkowych.

Podsumowanie

Testy jednostkowe pomagają w utrzymaniu wysokiej jakości kodu oraz minimalizowaniu liczby błędów. Na tym poziomie programiści nie powinni zaniedbywać testowania jednostkowego! Jest to nieodłączna nasza nieodłączna technika, którą powinniśmy stosować.

 

Awatar Dawid Rymarczyk

Dawid Rymarczyk

Prezes 2023/2024

Paradox Call To Action Image
Paradox Shape Image

Dołącz do naszej ekipy!

Skontaktuj się

DołączDołącz