为什么`should_panic`是属性而不是宏?

时间:2019-06-25 11:33:00

标签: unit-testing rust macros

我想知道为什么我们不使用函数或宏来测试函数是否会崩溃。

来自book

  

除了检查我们的代码是否返回了我们期望的正确值外,检查我们的代码是否能够按预期处理错误条件也很重要。
  为此,我们向测试函数添加了另一个属性should_panic。如果函数内部的代码出现紧急情况,则此属性将通过测试;否则,将通过测试。如果该函数内部的代码没有发生错误,则测试将失败。

为什么它不是像assert!这样的宏?

此代码将清晰易懂,并与其他测试宏进行标准化。

#[test]
fn greater_than_100() {
    should_panic!(Guess::new(200));
}

0 个答案:

没有答案