[−][src]Crate test_context
A library for providing custom setup/teardown for Rust tests without needing a test harness.
use test_context::{test_context, 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. } } #[test_context(MyContext)] #[test] fn test_works(ctx: &mut MyContext) { assert_eq!(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.
use test_context::{test_context, AsyncTestContext}; struct MyAsyncContext { value: String } #[async_trait::async_trait] impl AsyncTestContext for MyAsyncContext { async fn setup() -> MyAsyncContext { MyAsyncContext { value: "Hello, world!".to_string() } } async fn teardown(self) { // Perform any teradown you wish. } } #[test_context(MyAsyncContext)] #[tokio::test] async fn test_works(ctx: &mut MyAsyncContext) { assert_eq!(ctx.value, "Hello, World!"); }
Traits
AsyncTestContext | The trait to implement to get setup/teardown functionality for async tests. |
TestContext | The trait to implement to get setup/teardown functionality for tests. |
Attribute Macros
test_context | Macro to use on tests to add the setup/teardown functionality of your context. |