#diff #pretty #color #assert #replace #derive-debug #debugging

no-std dev pretty_assertions

用可替换的版本覆盖 assert_eq!assert_ne!,添加彩色差异

25 个版本 (6 个稳定版本)

1.4.0 2023年7月6日
1.3.0 2022年8月30日
1.2.1 2022年4月2日
1.2.0 2022年3月11日
0.1.2 2017年3月29日

#3开发工具

Download history 452398/week @ 2024-04-26 470071/week @ 2024-05-03 467318/week @ 2024-05-10 463770/week @ 2024-05-17 470555/week @ 2024-05-24 567523/week @ 2024-05-31 528682/week @ 2024-06-07 522458/week @ 2024-06-14 575322/week @ 2024-06-21 542197/week @ 2024-06-28 558114/week @ 2024-07-05 585615/week @ 2024-07-12 580620/week @ 2024-07-19 588129/week @ 2024-07-26 564192/week @ 2024-08-02 504639/week @ 2024-08-09

每月下载量:2,345,217
3,006 个 crate 中使用 (直接使用:2,242)

MIT/Apache

79KB
694

漂亮的断言

Latest version docs.rs Downloads of latest version All downloads

使用可替换的版本覆盖 assert_eq!,添加彩色差异。

用法

在 Rust 中编写测试时,您可能会大量使用 assert_eq!(a, b)

如果这样的测试失败,它将显示 ab 的所有详细信息。但您必须自己找出差异,这并不总是那么简单,就像这里

standard assertion

不是彩色差异会让这项任务容易得多吗?

pretty assertion

是的 - 只需 一行代码 就可以做到

use pretty_assertions::{assert_eq, assert_ne};
展示上述截图背后的示例。
// 1. add the `pretty_assertions` dependency to `Cargo.toml`.
// 2. insert this line at the top of each module, as needed
use pretty_assertions::{assert_eq, assert_ne};

fn main() {
    #[derive(Debug, PartialEq)]
    struct Foo {
        lorem: &'static str,
        ipsum: u32,
        dolor: Result<String, String>,
    }

    let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())});
    let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())});

    assert_eq!(x, y);
}

语义版本控制

断言的确切输出在时间上可能无法保证一致,并且可能在次要版本之间发生变化。该 crate 的输出旨在供人类阅读。它不适合精确比较,例如在快照测试中。

该 crate 遵循语义版本控制以公开导出的 crate 项目,但除外 private 模块,它可能在任何版本之间更改。

提示

将其指定为 [dev-dependencies],它将仅用于编译测试、示例和基准测试。这样,cargo build 的编译时间就不会受到影响!

还将 #[cfg(test)] 添加到您的 use 语句中,如下所示

#[cfg(test)]
use pretty_assertions::{assert_eq, assert_ne};

注意

  • Rust 2018 版本开始,您需要按模块声明 use pretty_assertions::{assert_eq, assert_ne};。以前您会编写 #[macro_use] extern crate pretty_assertions;
  • 替换只在您的自己的 crate 中有效,不适用于您包含的其他库。
  • assert_ne 也切换到多行展示,但 显示差异。
  • 在 Windows 上,终端状态被修改以正确处理 VT100 转义序列,这可能会破坏某些用例的显示。
  • 最低支持的 Rust 版本 (MSRV) 是 1.35.0

no_std 支持

对于 no_std 支持,禁用 std 功能并启用 alloc 功能

# Cargo.toml
pretty_assertions = { version= "...", default-features = false, features = ["alloc"] }

许可证

根据您的选择,许可如下

贡献

除非您明确说明,否则根据 Apache-2.0 许可证定义,您提交的任何旨在包含在该作品中的贡献都将按上述方式双许可,不附加任何其他条款或条件。

开发

  • 通过创建带有标签的 GitHub 发布版来发布新版本。Crate 将由 GHA 构建并上传到 crates.io。

依赖

~135KB