Solvro Talks - Testowanie integracyjne z Testcontainers

Kształt kółka
Kształt półkola
Ksztalt koła dekoracyjny
Solvro Talks - Testowanie integracyjne z Testcontainers

Solvro Talks - Testowanie integracyjne z Testcontainers

Czym są Testcontainers?

Testcontainers to biblioteka dostępna w różnych językach programowania, która
wykorzystuje Docker do uruchamiania lekkich kontenerów w celu symulowania
zewnętrznych zależności systemowych. Przykładowo, można uruchomić kontenery z bazami
danych, brokerami wiadomości, serwisami sieciowymi i innymi komponentami, z którymi
nasza aplikacja współpracuje.

Jak zacząć pracę z Testcontainers?

Aby rozpocząć pracę z Testcontainers, potrzebujemy:
1. Zainstalowanego Dockera - Docker jest niezbędny do uruchamiania kontenerów.
2. Biblioteki Testcontainers - należy dodać odpowiednią bibliotekę do projektu (np. w
przypadku Javy, dodajemy zależność do Maven lub Gradle).
3. Konfiguracji kontenerów - definiujemy, jakie kontenery będą uruchamiane w
ramach testów i jakie mają mieć konfiguracje.

Przykładowa Struktura Testu

Potrzebujemy zaciągnąc zależności z maven repository:

<dependency>
   <groupId>org.testcontainers</groupId>
   <artifactId>mysql</artifactId>
   <scope>test</scope>
</dependency>
<dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>org.testcontainers</groupId>
         <artifactId>testcontainers-bom</artifactId>
         <version>1.19.8</version>
        <type>pom</type>
        <scope>import</scope>
     </dependency>
   </dependencies>
</dependencyManagement>

Aby uniknąć określania wersji każdej zależności, możesz użyć BOM lub zestawienia
materiałów.
Przykładowy test z użyciem Testcontainers może wyglądać następująco:

public class MyIntegrationTest {


   @Rule
   public MySQLContainer mysql = new MySQLContainer("mysql:6.0");


   @Test
   public void testSomething() {
      String jdbcUrl = mysql.getJdbcUrl();
      //apply any logic related to database connection
   }
}

Kontener z bazą danych MySQL jest uruchamiany przed testem i zamykany po jego
zakończeniu. Dzięki temu mamy pewność, że baza danych jest zawsze w stanie
początkowym.

Debugowanie

Debugowanie testów integracyjnych z Testcontainers jest zazwyczaj prostsze, ponieważ
możemy łatwo odtwarzać środowisko testowe. W przypadku problemów, możemy:
● Sprawdzić logi kontenerów - Testcontainers umożliwia dostęp do logów
uruchomionych kontenerów, co pomaga w diagnozowaniu problemów.
● Uruchamiać testy lokalnie - Możemy uruchamiać testy na lokalnych maszynach
deweloperskich, co ułatwia szybkie iterowanie i debugowanie.

Zalety i wady Testcontainers

Zalety:
● Łatwość użycia - Prosta konfiguracja
● Wsparcie dla wielu języków programowania - Dostępność w różnych językach,
takich jak Java, Python, .NET.
● Izolacja testów - Każdy test działa w izolowanym środowisku
● Minimalne wymagania - Wymaga jedynie zainstalowanego Dockera.
● Tworzenie własnych kontenerów - Możliwość definiowania własnych kontenerów
dostosowanych do specyficznych potrzeb.
● Projekt open-source - co umożliwia społeczności udział w rozwoju.

Wady:
● Kompatybilność - Starsze systemy operacyjne mogą nie być kompatybilne z
Dockerem, a co za tym idzie, z Testcontainers.

Podsumowanie

Testcontainers to potężne narzędzie wspomagające testowanie integracyjne poprzez
wykorzystanie kontenerów Docker. Umożliwia tworzenie izolowanych, łatwych do
odtworzenia środowisk testowych, co znacząco podnosi jakość i niezawodność testów.

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