36 releases (22 breaking)
new 0.23.2 | Feb 7, 2025 |
---|---|
0.23.1 | Sep 26, 2024 |
0.22.0 | Aug 30, 2024 |
0.21.0 | Jul 30, 2024 |
0.3.1 | Oct 23, 2018 |
#16 in Testing
238,883 downloads per month
Used in 189 crates
(146 directly)
225KB
5K
SLoC
Testcontainers-rs
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.
- Depend on
testcontainers
- Implement
testcontainers::core::Image
for necessary docker-images - Run it with any available runner
testcontainers::runners::*
(useblocking
feature for synchronous API)
Example:
- Blocking API (under
blocking
feature)
use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::SyncRunner, GenericImage, ImageExt};
#[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"))
.with_network("bridge")
.with_env_var("DEBUG", "1")
.start()
.expect("Failed to start Redis");
}
- Async API
use testcontainers::{core::{IntoContainerPort, WaitFor}, runners::AsyncRunner, GenericImage, ImageExt};
#[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"))
.with_network("bridge")
.with_env_var("DEBUG", "1")
.start()
.await
.expect("Failed to start Redis");
}
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~23–40MB
~740K SLoC