assert!(a == b)
dauert weniger Zeichen als assert_eq!(a, b)
und meiner Meinung nach ist lesbarer.Warum existieren `assert_eq` und` assert_ne`, wenn ein einfaches `assert` genügt?
Die Fehlermeldungen sind mehr oder weniger das gleiche:
thread 'main' panicked at 'assertion failed: `(left == right)` (left: `1`, right: `2`)', src\main.rs:41
oder
thread 'main' panicked at 'assertion failed: 1 == 2', src\main.rs:41
Eigentlich ist diese Frage nicht nur über Rust ist; Ich halte diese verschiedenen assert Makros oder Funktionen in Unit-Test-Frameworks zu sehen:
- Cpputest hat
CHECK
undCHECK_FALSE
undCHECK_EQUAL
und so weiter; - Googletest hat
EXPECT_GT
undEXPECT_EQ
und so weiter; - JUnit hat
assertEquals
undassertFalse
und tun auf.
Häufig gibt es auch Assert für einen bestimmten Typ wie String oder Array. Was ist der Punkt?
Rechts. Dein Test-Framework soll dir helfen. Einfach zu sagen, dass ein Test fehlgeschlagen ist, ist viel weniger hilfreich, als zu sagen: "Ein Test ist aus diesen Gründen * fehlgeschlagen". Es gibt auch den ganzen Aspekt, warum wir Funktionen mit Namen überhaupt erst schaffen - um lesbaren und verständlichen Code zu haben. – Shepmaster
@Shempmaster Ich bin mir nicht sicher, dass assert_eq von selbst besser lesbar ist, aber eine aussagekräftigere Fehlermeldung ist natürlich besser. – Amomum
@Amomum: Es gibt tatsächlich einen RFC, um assert_eq zu verbessern, in der Zwischenzeit könnten Sie an der Kiste [pretty_assertions] (https://crates.io/crates/pretty_assertions) interessiert sein. –