Ketika saya melihat contoh di kelas Assert JavaDoc
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
Saya tidak melihat keuntungan besar, katakanlah assertEquals( 0, 1 )
,.
Sangat menyenangkan mungkin untuk pesan jika konstruksinya menjadi lebih rumit tetapi apakah Anda melihat lebih banyak keuntungan? Keterbacaan?
assertTrue
dengan&&
. Memisahkannya menjadi dua kondisi membuat masalah menjadi jelas bahkan di JUnit. Jangan salah sangka; Saya setuju dengan Anda, saya hanya tidak suka teladan Anda.Catatan rilis JUnit untuk versi 4.4 (saat diperkenalkan) menyatakan empat keuntungan:
Argumentasi lebih rinci dari orang yang membuat sintaks baru: di sini .
sumber
Pada dasarnya untuk meningkatkan keterbacaan kode .
Selain hamcrest, Anda juga dapat menggunakan pernyataan fest . Mereka memiliki beberapa keunggulan dibandingkan hamcrest seperti:
(
assertEquals(123, actual); // reads "assert equals 123 is actual"
vs.assertThat(actual).isEqualTo(123); // reads "assert that actual is equal to 123")
Beberapa contoh
Pembaruan 17 Oktober 2016
Fest sudah tidak aktif lagi, gunakan AssertJ sebagai gantinya.
sumber
Pembenaran yang sangat mendasar adalah bahwa sulit untuk mengacaukan sintaks baru.
Misalkan nilai tertentu, foo, harus 1 setelah tes.
--ATAU--
Dengan pendekatan pertama, sangat mudah untuk melupakan urutan yang benar, dan mengetiknya mundur. Kemudian daripada mengatakan bahwa tes gagal karena diharapkan 1 dan mendapat 2, pesannya terbalik. Bukan masalah ketika tes lulus, tetapi dapat menyebabkan kebingungan ketika tes gagal.
Dengan versi kedua, hampir tidak mungkin membuat kesalahan ini.
sumber
Contoh:
btw: Anda juga bisa menulis Teks di assertXXX ...
sumber
assertThat
kasus ini, karena pesan yang Anda dapatkan secara otomatis sama informatif: "Diharapkan: (nilai lebih besar dari <1> dan nilai kurang dari <3>)"Dekat dengan bahasa alami.
Lebih mudah dibaca, lebih mudah menganalisis kode. Programer menghabiskan lebih banyak waktu untuk menganalisis kode daripada menulis yang baru. Jadi jika kode akan mudah dianalisis maka pengembang harus lebih produktif.
Kode PS harus menjadi buku yang ditulis dengan baik. Kode yang didokumentasikan sendiri.
sumber
ada keuntungan untuk menegaskan bahwa lebih dari assertEquals -
1) lebih mudah dibaca
2) informasi lebih lanjut tentang kegagalan
3) kompilasi kesalahan waktu - daripada kesalahan waktu berjalan
4) fleksibilitas dengan kondisi pengujian penulisan
5) portabel - jika Anda menggunakan hamcrest - Anda dapat menggunakan jUnit atau TestNG sebagai kerangka kerja yang mendasarinya.
sumber