stestfixture or simple test fixture is a macro library to implement test fixture with no hassle.
Their is four macros: before
, after
, before_each
, after_each
. The function pass as argument must return nothing.
before
and after
are simply added before the test function
```rust
mod tests { use sfixture::before; #[test] #[before(functiontorun(2))] fn test() { let a = 2; something(); asserteq!(a,2); println!("ending");
}
fn something(){}
fn function_to_run(i:i32){
println!("I did {} thing(s)",i);
}
} ``` will return
I did 2 thing(s)
ending
```rust
mod tests { use sfixture::after; #[test] #[after(functionto_run(66))] fn test() -> Result<(), ()> { println!("before"); let i = -55; something(); if i == 0 { something(); Ok(()) } else if i == 2 { something(); return Ok(()); } else { panic!("oh no!") Ok(()) } }
fn something(){}
fn function_to_run(i:i32){
println!("I did {} thing(s)",i);
}
}
will return
before
{panic statement}
I did 66 thing(s)
```
before_each
and after_each
behave in a similar matter and stack with before
and after
macro. It has to be noted that the scope of the
function pass as argument matter. It has to consider the scope of the test module.
```rust use sfixture::{beforeeach,after, before};
mod tests { use super::*; #[test] #[before(functiontorun(2))] fn test() { let a = 2; something(); assert_eq!(a,2); println!("ending");
}
fn something(){}
fn function_to_run(i:i32){
println!("I did {} thing(s)",i);
}
}
will return
I did 2 thing(s)
I did 78 thing(s)
ending
```
The macros are pretty easy to use but examples can be found in the test folder of the source code.
run
cargo test -- --test-threads 1