9 个版本
| 0.1.8 | 2022年2月6日 | 
|---|---|
| 0.1.7 | 2021年10月16日 | 
| 0.1.4 | 2021年9月30日 | 
619 在 过程宏 中
14KB
161 行
s_test_fixture
s_test_fixture 或简单测试固定件是一个无需烦恼即可实现测试固定件的宏库。
使用方法
有四个宏:before、after、before_each、after_each。作为参数传递的函数必须返回 ()。
before 和 after 简单地添加到测试函数之前。
before_each 和 after_each 的行为类似,并且与 before 和 after 宏堆叠。需要注意的是,作为参数传递的函数的作用域很重要,它必须在测试模块内部可见。
before
#[cfg(test)]
mod tests {
    use s_test_fixture::before;
    #[test]
    #[before(function_to_run(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);
    }
}
将返回
I did 2 thing(s)
ending
after
#[cfg(test)]
mod tests {
    use s_test_fixture::after;
    #[test]
    #[after(function_to_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);
    }
}
将返回
before
{panic statement}
I did 66 thing(s)
before_each
use s_test_fixture::{before_each,after, before};
#[cfg(test)]
#[before_each(function_to_run(78))]
mod tests {
    use super::*;
    #[test]
    #[before(function_to_run(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);
    }
}
将返回
I did 2 thing(s)
I did 78 thing(s)
ending
测试
运行 cargo test -- --test-threads 1
依赖项
~1.5MB
~35K SLoC