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