Neden Hamcrest-Eşleştirici ve assertThat kullanmalıyım (geleneksel) assertXXX yerine()-Yöntem
Bu örneklerde baktığımda sınıf JavaDoc İddia
assertThat("Help! Integers don't work", 0, is(1)); // fails:
// failure message:
// Help! Integers don't work
// expected: is <1>
// got value: <0>
assertThat("Zero is one", 0, is(not(1))) // passes
Ben, diyelim ki, assertEquals( 0, 1 )
büyük bir avantaj görüyor.
Eğer yapıları daha karmaşık ama daha fazla avantaj görüyor musun? hoş belki iletiler için Okunabilirlik?
CEVAP
Tam olarak niyetiniz eşleşen assertFoo
bulunduğu, bu durumda büyük bir avantajı var. Bu gibi durumlarda davranır aynı neredeyse.
Ama biraz daha karmaşık kontroller için geldiğinde, o zaman avantajı daha görünür hale gelir:
assertTrue(foo.contains("someValue") && foo.contains("anotherValue"));
vs
assertThat(foo, hasItems("someValue", "anotherValue"));
Bir tartışmak onlardan daha kolay okumak için, ama bir kez onaylama işlemi başarısız, alacaksın iyi bir hata mesajı assertThat
, ama sadece çok az miktarda bilgi assertTrue
.
assertThat
bu iddianın ne olduğunu ve var yerine ne söyleyecektir. assertTrue
true
beklediğiniz yere false
var olduğunu söyleyecektir.
favicon.png vs favicon.ıco - PNG neden...
Neden anahtar kelime "son" J...
Neden ilişkisel veritabanı yerine belg...
Neden hiç emplace_back yerine push_bac...
Neden HttpResponseMessage yerine İHttp...