#test #assert #assertions #macro #plugin #passert #pretty-power

nightly passert_macros

针对Rust的漂亮/强大断言宏(宏crate)

1个不稳定版本

使用旧的Rust 2015

0.2.0 2015年8月30日

#86#assertions

MIT 协议

7KB
120

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

没有运行时依赖