A library for providing custom setup/teardown for Rust tests without needing a test harness.
```rust use testcontext::{testcontext, TestContext};
struct MyContext { value: String }
impl TestContext for MyContext { fn setup() -> MyContext { MyContext { value: "Hello, world!".to_string() } }
fn teardown(self) {
// Perform any teardown you wish.
}
}
fn testworks(ctx: &mut MyContext) { asserteq!(ctx.value, "Hello, world!"); } ```
Works with other test wrappers like actix_rt::test
or
tokio::test
that turn your test function into an async
function.
```rust use testcontext::{testcontext, AsyncTestContext};
struct MyAsyncContext { value: String }
impl AsyncTestContext for MyAsyncContext { async fn setup() -> MyAsyncContext { MyAsyncContext { value: "Hello, world!".to_string() } }
async fn teardown(self) {
// Perform any teradown you wish.
}
}
async fn testworks(ctx: &mut MyAsyncContext) { asserteq!(ctx.value, "Hello, World!"); } ```