我有以下 Rust 单元测试:
#[test]
fn test_multiline_strings_are_equal() {
let expected = "\
one
two
three
four
";
let actual = "\
one
two
four
";
assert_eq!(actual, expected);
}
Run Code Online (Sandbox Code Playgroud)
当失败时,会输出以下内容:
---- printer::tests::test_multiline_strings_are_equal stdout ----
thread 'printer::tests::test_multiline_strings_are_equal' panicked at 'assertion failed: `(left == right)`
left: `"one\ntwo\nfour\n"`,
right: `"one\ntwo\nthree\nfour\n"`', src\printer.rs:600:9
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何让它在不同的行上显示“一”、“二”、“三”和“四”,以便于比较?
图书馆pretty_assertions就是这么做的。只需添加
use pretty_assertions::assert_eq;
Run Code Online (Sandbox Code Playgroud)
其替换assert_eq!宏将产生逐行差异;在你的例子中:
Diff < left / right > :
one
two
>three
four
Run Code Online (Sandbox Code Playgroud)
它也适用于Debug非字符串值的输出:
Diff < left / right > :
one
two
>three
four
Run Code Online (Sandbox Code Playgroud)
Diff < left / right > :
Foo {
x: "x",
< y: "y",
> y: "surprise!",
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
681 次 |
| 最近记录: |