Amo*_*mum 7 unit-testing assert rust
assert!(a == b)比assert_eq!(a, b)我更少的字符,在我看来,更具可读性.
错误消息或多或少相同:
thread 'main' panicked at 'assertion failed: `(left == right)` (left: `1`, right: `2`)', src\main.rs:41
Run Code Online (Sandbox Code Playgroud)
要么
thread 'main' panicked at 'assertion failed: 1 == 2', src\main.rs:41
Run Code Online (Sandbox Code Playgroud)
实际上,这个问题不仅仅是关于Rust; 我一直在单元测试框架中看到这些不同的断言宏或函数:
CHECK与CHECK_FALSE和CHECK_EQUAL等;EXPECT_GT和EXPECT_EQ等;assertEquals和assertFalse做的.通常还有一些特定类型的断言,如字符串或数组.重点是什么?
E_n*_*ate 10
线程'主'惊慌于'断言失败:1 == 2',
你的例子太简单了,看不出使用它有很大的优势assert_eq!.考虑以下代码:
let s = "Hello".to_string();
assert!(&s == "Bye");
Run Code Online (Sandbox Code Playgroud)
这是由此产生的恐慌消息:
'assertion failed: &s == "Bye"'
Run Code Online (Sandbox Code Playgroud)
现在让我们看看当我们使用时会发生什么assert_eq!:
let s = "Hello".to_string();
assert_eq!(&s, "Bye");
Run Code Online (Sandbox Code Playgroud)
消息:
'assertion failed: `(left == right)` (left: `"Hello"`, right: `"Bye"`)'
Run Code Online (Sandbox Code Playgroud)
此消息提供了比前者更多的洞察力.其他单元测试系统通常也这样做.