1个不稳定版本
使用旧的Rust 2015
0.2.0 | 2015年8月30日 |
---|
#86 在 #assertions
7KB
120 行
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
将子表达式转换为字符串是在整个表达式评估后完成的。在其他子表达式导致之前评估的子表达式发生变化的情况下,显示的值可能不正确。 - 逻辑表达式
&&
和||
不是按需评估的。 - 为每个子表达式创建一个新的绑定,这可能会产生意外的副作用。