stestfixture

stestfixture or simple test fixture is a macro library to implement test fixture with no hassle.

Usage

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

[cfg(test)]

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

[cfg(test)]

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};

[cfg(test)]

[beforeeach(functionto_run(78))]

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.

Test

run cargo test -- --test-threads 1