2 个不稳定版本

使用旧的 Rust 2015

0.2.0 2015年8月30日
0.1.0 2015年8月27日

#79 in #assertions

MIT 许可证

5KB
62

rust-passert

Travis Build Status MIT licensed

针对 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 将子表达式转换为字符串的操作是在整个表达式评估之后完成的。在其他子表达式导致先前评估的子表达式发生变化的情况下,显示的值可能是不正确的。
  • 逻辑表达式 &&|| 不会按需评估。
  • 为每个子表达式创建一个新的绑定,这可能会导致意外的副作用。

无运行时依赖