When writing tests in Rust, you'll probably use assert_eq!(a, b)
a lot.
If such a test fails, it will present all the details of a
and b
, but you have to spot, the differences yourself, which is not always straightforward, like here:
Wouldn't that task be much easier with a colorful diff?
Yep — and you only need one line of code to make it happen:
```rust,ignore
```
Show the example behind the screenshots above.
``rust,ignore
// 1. add the
pretty_assertionsdependency to
Cargo.toml`.
// 2. insert this line at the top of your crate root or integration test
fn main() {
#[derive(Debug, PartialEq)]
struct Foo {
lorem: &'static str,
ipsum: u32,
dolor: Result
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);
} ```
Specify it as [dev-dependency]
and it will only be used for compiling tests, examples, and benchmarks.
This way the compile time of cargo build
won't be affected!
In your crate root, also add #[cfg(test)]
to the crate import, like this:
```rust,ignore
extern crate pretty_assertions; ```
#[macro_use] extern crate
pretty_assertions
, if you want colorful diffs there.pretty_assertions
is an ultra-thin wrapper around the
difference
crate, which does the
heavy lifting. All that pretty_assertions
does is to replace the
assert_eq!
macro with just about 22 lines of code.Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.