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 在 开发工具 中
每月下载量:2,345,217
在 3,006 个 crate 中使用 (直接使用:2,242)
79KB
694 行
漂亮的断言
使用可替换的版本覆盖 assert_eq!
,添加彩色差异。
用法
在 Rust 中编写测试时,您可能会大量使用 assert_eq!(a, b)
如果这样的测试失败,它将显示 a
和 b
的所有详细信息。但您必须自己找出差异,这并不总是那么简单,就像这里
不是彩色差异会让这项任务容易得多吗?
是的 - 只需 一行代码 就可以做到
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 License,版本 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则根据 Apache-2.0 许可证定义,您提交的任何旨在包含在该作品中的贡献都将按上述方式双许可,不附加任何其他条款或条件。
开发
- 通过创建带有标签的 GitHub 发布版来发布新版本。Crate 将由 GHA 构建并上传到 crates.io。
依赖
~135KB