gpt4 book ai didi

unit-testing - 当两个字符串不相等时,assert_eq 宏是否可能显示差异?

转载 作者:行者123 更新时间:2023-11-29 07:57:08 25 4
gpt4 key购买 nike

我正在为语言分词器编写一些测试,并将分词器生成的分词的 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 字符串都是 pretty-print ,如果 cargo test 打印出两个字符串的行差异会更有帮助。有什么办法可以做到这一点吗?

更新:有人编辑了这篇文章的标题,但删除了一条重要信息:当两个字符串 不相等时,我正在寻找 差异。我在这里看到的答案之一是针对更一般的问题,即当两个值不相等时获取两个值的调试表示的字符差异。那要么超出我的需要,要么超出我的需要。例如,两个字符串的调试表示的差异不会给我一个行差异,而是一个大的、令人费解的字符差异(因为这些行在调试表示中显示为转义的“\n”标记)。

最佳答案

是的,但不是标准库提供的 assert_eq。你可以使用 pretty_assertions crate ,其设计正是为了满足您的需求。

diff


实际上,内置宏可以采用两个以上的参数,通过使用自定义消息对其进行扩展来提供有关断言的更多信息。所以从技术上讲,如果您自己或外部提供某种差异化实现,即 DisplayDebug,您就可以将其传递给宏。严格来说,这个宏在某些方面也可用于此类事情。

关于unit-testing - 当两个字符串不相等时,assert_eq 宏是否可能显示差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57915265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com