【发布时间】:2020-01-14 20:04:19
【问题描述】:
我正在为语言标记器编写一些测试,并将标记器生成的标记化的 JSON 序列化版本与已知良好标记化的序列化进行比较。所以我有一些这样的测试:
#[test]
fn test_tokenize() {
let actual_token_json = /* string */;
let expected_token_json = /* string */;
assert_eq!(actual_token_json, expected_token_json);
}
但是,当这些测试失败时,cargo test 只是说 JSON 字符串不相等并将它们都打印出来,这没什么用。由于 JSON 字符串都打印得很漂亮,如果cargo test 打印出两个字符串的行差异会更有帮助。有什么办法可以做到吗?
更新: 有人编辑了这篇文章的标题,但删除了一条重要信息:当 两个字符串 不相等时,我正在寻找 line 差异。我在这里看到的答案之一是更一般的问题,即在两个值不相等时获取 line and 字符 的调试表示的差异。这不是我需要的,就是不是我需要的。例如,两个字符串的调试表示的差异不会给我一个行差异,而是一个大的、复杂的字符差异(因为这些行在调试表示中显示为转义的“\n”标记)。
【问题讨论】:
标签: unit-testing rust macros assert rust-cargo