Testcontainers
Run integration tests against real dependencies using disposable Docker containers with Testcontainers. Spin up Postgres, Redis, Kafka, and more per test run, get ephemeral ports and clean state, and tear everything down automatically.
This skill helps you write reliable integration tests with Testcontainers. It boots real databases, message brokers, and services in throwaway Docker containers, waits on readiness with proper wait strategies, exposes mapped ports to the test, seeds fixtures, and reuses containers across a suite for speed. It supports Java, Node, Python, Go, and .NET bindings, plus modules for Postgres, MySQL, Redis, Kafka, LocalStack, and Selenium. It also covers CI setup and Docker-in-Docker considerations.
When to use
Use when writing integration tests with Testcontainers — booting real Postgres/Redis/Kafka in disposable Docker containers, wait strategies, ephemeral ports, fixture seeding, or wiring it into CI.
Examples
Postgres integration test
Real DB per test run
Write a Node test that uses Testcontainers to start a Postgres container, runs migrations against it, exercises the repository layer, and tears the container down afterward
Kafka producer/consumer test
Broker in a container
Set up a Testcontainers Kafka module in a Java integration test, produce a message, and assert the consumer receives it, using a wait strategy for broker readiness