| Crates.io | edtest |
| lib.rs | edtest |
| version | 0.5.0 |
| created_at | 2025-03-08 17:06:29.275156+00 |
| updated_at | 2025-11-06 14:18:23.16045+00 |
| description | Streamlines the use of `rstest` with tracing and support for async tests with the `tokio` framework. |
| homepage | |
| repository | https://github.com/taurr/edtest |
| max_upload_size | |
| id | 1584668 |
| size | 27,844 |
The crate streamlines the use of rstest with support for tracing (using test-log). async tests are supported using the tokio framework.
The crate re-exports the assertions from static-assertions, and the #[serial] attribute of serial_test for pure convenience.
Unfortunately, due to the nature of macros, besides this crate the user still needs a few dev-dependencies:
cargo.toml:
[dev-dependencies]
edtest = ...
rstest = ...
test-log = ...
# Only needed if using the #[serial] attribute to make tests not run concurrently
serial_test = ...
tests:
use edtest::test;
use tracing::*;
/// Normal synchronous test.
/// Note that `cargo test` still tries to run these concurrently!
#[test]
fn sync_test() {
info!("Tracing output is captured and part of the test output");
}
/// Async tests using `tokio` are fully supported - they can even
/// be run using `serial` (non-concurrent)
#[test]
#[edtest::serial]
async fn async_value_test(
#[values(0, 1, 2, 3, 4, 5)] a: u32,
#[values(0, 1, 2, 3, 4, 5)] b: u32,
) {
use edtest::assert_cfg;
// `static_assertions` are re-exported for convenience
assert_cfg!(test);
trace!(a, b);
let ab = super::add(a, b);
let ba = b + a;
assert_eq!(ab, ba);
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
}
assert_cmd
Simplify integration testing of CLIsrexpect
Running/testing interactive CLIs