4
assert!(a == b)
比assert_eq!(a, b)
佔用更少的字符,在我看來,它更具可讀性。爲什麼`assert_eq`和`assert_ne`存在一個簡單的`assert`就足夠了?
錯誤消息是或多或少是相同的:
thread 'main' panicked at 'assertion failed: `(left == right)` (left: `1`, right: `2`)', src\main.rs:41
或
thread 'main' panicked at 'assertion failed: 1 == 2', src\main.rs:41
實際上,這個問題不僅是鏽病;我總是看到在單元測試框架這些不同的斷言宏或功能:
- Cpputest有
CHECK
和CHECK_FALSE
和CHECK_EQUAL
等; - Googletest有
EXPECT_GT
和EXPECT_EQ
等等; - JUnit有
assertEquals
和assertFalse
,並繼續。
通常還有一些特定類型的字符串或數組聲明。重點是什麼?
對。你的測試框架應該可以幫助你。簡單地說「一個測試失敗」比說「由於這些原因測試失敗*」沒有多大幫助。還有我們爲什麼要首先創建名稱的函數的全部方面 - 具有可讀性和可理解的代碼。 – Shepmaster
@Shepmaster我不確定assert_eq本身更具可讀性,但更多的信息性錯誤信息當然更好。 – Amomum
@Amomum:實際上有一個改進assert_eq的RFC,同時你可能對[pretty_assertions](https://crates.io/crates/pretty_assertions)箱子感興趣。 –