25 releases (15 breaking)

0.16.7 May 1, 2024
0.15.0 Oct 5, 2023
0.14.0 Jun 1, 2022
0.12.0 Jan 28, 2021
0.3.1 Oct 23, 2018

#13 in Testing

Download history 26113/week @ 2024-01-26 23212/week @ 2024-02-02 24301/week @ 2024-02-09 23559/week @ 2024-02-16 25934/week @ 2024-02-23 26387/week @ 2024-03-01 26664/week @ 2024-03-08 24641/week @ 2024-03-15 26442/week @ 2024-03-22 26535/week @ 2024-03-29 27187/week @ 2024-04-05 28601/week @ 2024-04-12 27779/week @ 2024-04-19 30409/week @ 2024-04-26 31480/week @ 2024-05-03 24558/week @ 2024-05-10

119,047 downloads per month
Used in 100 crates (86 directly)

MIT/Apache

120KB
2.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::WaitFor, runners::SyncRunner, GenericImage};

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

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

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

~21–34MB
~646K SLoC