Macro nar_dev_utils::fail_tests
source · macro_rules! fail_tests { {} => { ... }; {$(#[$attr:meta])* $name:ident $code:block $($tail:tt)*} => { ... }; {$(#[$attr:meta])* $name:ident $code:expr; $($tail:tt)*} => { ... }; {$(#[$attr:meta])* $name:ident $code:stmt; $($tail:tt)*} => { ... }; }
Expand description
§辅助用测试宏/批量添加失败测试
- 可极大减轻添加
should_panic的代码量
! 📝, $(,)?这里的「,」代表的不是「分隔表达式」,而是「模式中的,」
- 故应去除这前边的「,」
用法:
use nar_dev_utils::fail_tests;
// 一般形式:函数名 {代码}
fail_tests! {
/// 允许文档注释
失败测试的函数名 {
// 会导致panic的代码
}
// ... 允许多条
}
// 亦可:函数名 表达式/语句
fail_tests! {
/// 允许文档注释
失败测试的函数名 if true {panic!("会导致panic的表达式")} else {};
// ... 允许多条
}
fail_tests! {
/// 允许文档注释
失败测试的函数名 panic!("会导致panic的语句");
// ... 允许多条
}§用例
use nar_dev_utils::fail_tests;
fail_tests! {
/// 失败测试
fail {
panic!("这是一个测试")
}
/// 失败测试二号
fail2 {
panic!("这是另一个测试")
}
}将被等价转换为
/// 失败测试
#[test]
#[should_panic]
fn fail() {
panic!("这是一个测试")
}
/// 失败测试二号
#[test]
#[should_panic]
fn fail2() {
panic!("这是另一个测试")
}- ✅【2024-03-15 20:15:20】现在借鉴lazy_static包,可以在测试中使用文档字符串了
- 📝原理:文档字符串实际上是
#[doc = "一行文本…"]的语法糖 - 📝技法:使用
$(#[$attr:meta])*匹配元数据,然后原样输出
- 📝原理:文档字符串实际上是