35 releases (22 breaking)

0.23.1 Sep 26, 2024
0.22.0 Aug 30, 2024
0.21.0 Jul 30, 2024
0.15.0 Oct 5, 2023
0.3.1 Oct 23, 2018

#18 in Testing

Download history 39352/week @ 2024-08-21 42416/week @ 2024-08-28 48368/week @ 2024-09-04 40430/week @ 2024-09-11 37727/week @ 2024-09-18 44031/week @ 2024-09-25 44096/week @ 2024-10-02 43297/week @ 2024-10-09 51181/week @ 2024-10-16 56324/week @ 2024-10-23 50344/week @ 2024-10-30 49892/week @ 2024-11-06 47726/week @ 2024-11-13 54861/week @ 2024-11-20 48594/week @ 2024-11-27 45390/week @ 2024-12-04

206,911 downloads per month
Used in 169 crates (130 directly)

MIT/Apache

200KB
4.5K SLoC

Testcontainers-rs

Continuous Integration Crates.io Docs.rs Slack

Testcontainers-rs is the official Rust language fork of http://testcontainers.org.

Usage

testcontainers is the core crate

The crate provides an API for working with containers in a test environment.

  1. Depend on testcontainers
  2. Implement testcontainers::core::Image for necessary docker-images
  3. Run it with any available runner testcontainers::runners::* (use blocking feature for synchronous API)

Example:

  • Blocking API (under blocking feature)
use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::SyncRunner, GenericImage};

#[test]
fn test_redis() {
    let container = GenericImage::new("redis", "7.2.4")
        .with_exposed_port(6379.tcp())
        .with_wait_for(WaitFor::message_on_stdout("Ready to accept connections"))
        .start()
        .expect("Redis started");
}
  • Async API
use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::AsyncRunner, GenericImage};

#[tokio::test]
async fn test_redis() {
    let container = GenericImage::new("redis", "7.2.4")
        .with_exposed_port(6379.tcp())
        .with_wait_for(WaitFor::message_on_stdout("Ready to accept connections"))
        .start()
        .await
        .expect("Redis started");
}

Ready-to-use images

The easiest way to use testcontainers is to depend on ready-to-use images (aka modules).

Modules are available as a community-maintained crate: testcontainers-modules

License

Licensed under either of

at your option.

Dependencies

~23–40MB
~739K SLoC