Testcontainers: real-service integration testing, no in-memory fakes
An official introductory guide to Testcontainers. It opens with familiar integration-testing pain points: pre-provisioned environments are hard to maintain, and parallel build pipelines can pollute each other's test data. It argues that substituting mocks or in-memory databases (e.g. H2 for Postgres) hides production-specific features and delays feedback—an SQL query may pass on H2 only to fail against Postgres after deployment. The solution is Testcontainers, a library that starts real services in Docker containers before tests, wires the application to those containers, and removes them afterward. Infrastructure lives next to test code, tests can be launched from an IDE, and each pipeline gets an isolated set of services. Supported languages include Java, .NET, Go, NodeJS, Rust, and Python. The vendor perspective is clear, and there are no code samples or benchmarks; useful as a first read rather than a deep evaluation.