1 unstable release
new 0.1.0 | Mar 8, 2025 |
---|
#345 in Testing
53 downloads per month
9KB
Easy Desktop Test
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.
Usage
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;
}
Noteworthy crates
General
Messing with files
Network
CLI programs
assert_cmd
Simplify integration testing of CLI'srexpect
Running/testing interactive CLI's
Tools
- coverage LLVM Coverage reports the easy way
Dependencies
~6–12MB
~136K SLoC