serial_test
allows for the creation of serialised Rust tests using the serial
attribute
e.g.
#[test]
#[serial]
fn test_serial_one() {
// Do things
}
#[test]
#[serial]
fn test_serial_another() {
// Do things
}
#[tokio::test]
#[serial]
async fn test_serial_another() {
// Do things asynchronously
}
Multiple tests with the serial
attribute are guaranteed to be executed in serial. Ordering of the tests is not guaranteed however.
Note that if you're using an async test reactor attribute (e.g. tokio::test
or actix_rt::test
) then they should be listed before
serial
, otherwise we don't get an async function and things break. There's now an error for this case to improve debugging.
We require at least Rust 1.39 for async/await support
Add to your Cargo.toml
[dev-dependencies]
serial_test = "*"
plus use serial_test::serial;
(for Rust 2018) or
#[macro_use]
extern crate serial_test;
for earlier versions.
You can then either add #[serial]
or #[serial(some_text)]
to tests as required.