1 个不稳定版本
0.1.0-alpha1 | 2021年5月18日 |
---|
725 in 测试
17KB
82 行
assert2ify
这个crates提供了#[assert2ify]
属性,这是一个一行解决方案,用于将你的代码中的标准库断言替换为assert2 crate中的更具有表现力的断言。
这个属性不仅可以替换简单的断言,如assert!(...)
或assert_eq!(...)
,还可以替换更复杂的结构,如assert!(matches!(...))
,并带有更好的错误消息。
动机
Rust的内建测试和断言支持非常出色,但标准库断言在错误消息方面有所欠缺。这正是assert2 crate大显身手的地方,因为它提供了非常有帮助的错误消息。
假设我们对一个向量的长度有一些断言,例如assert!(my_vector.len() < 5)
。如果这个断言失败,它只会告诉你条件被违反了,但不会告诉你向量的实际长度是多少。为了知道这一点,你必须调试测试或添加额外的日志输出。assert2 crate就来救场,因为我们把断言写成assert2::assert!(my_vector.len() < 5)
,那么可能的失败情况将如下所示(加上一些漂亮的颜色)
Assertion failed at tests/my_test.rs:107:5:
assert!( my_vector.len() < 5 )
with expansion:
7 < 5
您可以使用#[assert2ify]
属性注释任何函数(通常是测试用例),它将自动替换函数内的断言。
用法
只需将#[assert2ify]
属性注释到任何函数上,然后让该属性替换您的代码中的断言为assert2 crate的断言。在文档中查看#[assert2ify]属性还能为您做什么。它不仅替换简单的断言,还能替换更复杂的结构,例如assert!(matches!(...)),以更易于理解的形式。断言的工作方式与之前相同,但它们提供了更好的错误信息。
此外,该属性允许您用检查替换断言,检查不会立即失败,而是在测试用例完全结束后才会失败。如果您想在一次通过中捕获测试中所有失败的断言,可以使用属性#[assert2ify(check)]
来完成。
限制
请参阅文档以了解将替换的内容和不会替换的内容的限制。
依赖项
~1.4–8.5MB
~77K SLoC