2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2015年8月30日 |
---|---|
0.1.0 | 2015年8月27日 |
#79 in #assertions
5KB
62 行
rust-passert
针对 Rust 的美观/强大断言宏
概述
类似于 [Spock/Groovy 断言](https://docs.groovy-lang.cn/latest/html/documentation/core-testing-guide.html#_power_assertions) 的断言宏,用于评估和打印子表达式,简化失败分析。
示例
#![feature(plugin)]
#![plugin(passert_macros)]
extern crate passert;
#[test]
#[should_panic]
fn it_works() {
let a = 3;
let b = 4;
passert!(a + 2 + 3 == -b);
}
输出
running 1 test
Assertion failed:
a + 2 + 3 == -b
| | | | ||
3 5 8 | |4
| -4
false
thread 'it_works' panicked at 'Assertion failed: a + 2 + 3 == -b', src/lib.rs:11
限制/注意事项
- 所有显示的子表达式都必须实现
Debug
。 - 通过
Debug
将子表达式转换为字符串的操作是在整个表达式评估之后完成的。在其他子表达式导致先前评估的子表达式发生变化的情况下,显示的值可能是不正确的。 - 逻辑表达式
&&
和||
不会按需评估。 - 为每个子表达式创建一个新的绑定,这可能会导致意外的副作用。