Saya bertanya-tanya apakah ada yang tahu cara untuk memeriksa apakah Daftar kosong menggunakan assertThat()
dan Matchers
?
Cara terbaik yang bisa saya lihat hanya menggunakan JUnit:
assertFalse(list.isEmpty());
Tapi saya berharap ada cara untuk melakukan ini di Hamcrest.
java
collections
junit
hamcrest
Ian Dallas
sumber
sumber
Jawaban:
Yah selalu ada
... tapi saya rasa itu tidak cukup apa yang Anda maksud :)
Kalau tidak:
empty()
adalah statis diMatchers
kelas. Perhatikan kebutuhan untuk melemparkanlist
keCollection
, berkat Hamcrest 1,2 ini obat generik miring.Impor berikut dapat digunakan dengan hamcrest 1.3
sumber
assertThat((Collection)list, is(not(empty())));
expected true but got false
Anda mendapatkan sesuatu sepertiexpected empty but got [1, 2, 3]
assertThat(list, Matchers.<String>empty())
(asumsi daftar adalah kumpulan dariString
s)Ini diperbaiki di Hamcrest 1.3. Kode di bawah ini mengkompilasi dan tidak menghasilkan peringatan apa pun:
Tetapi jika Anda harus menggunakan versi yang lebih lama - alih-alih disadap,
empty()
Anda dapat menggunakan:hasSize(greaterThan(0))
(
import static org.hamcrest.number.OrderingComparison.greaterThan;
atauimport static org.hamcrest.Matchers.greaterThan;
)Contoh:
Yang paling penting tentang solusi di atas adalah tidak menghasilkan peringatan. Solusi kedua bahkan lebih berguna jika Anda ingin memperkirakan ukuran hasil minimum.
sumber
assertThat(list, not(hasSize(0)))
akan sukses jikalist
adalahnull
, sebagai lawanassertThat(list, hasSize(greaterThan(0)))
Jika Anda mencari pesan gagal yang dapat dibaca, Anda dapat melakukannya tanpa hamcrest dengan menggunakan assertEquals yang biasa dengan daftar kosong:
Misal jika Anda berlari
Anda mendapatkan
sumber
Buat IsEmpty TypeSafeMatcher kustom Anda sendiri:
Bahkan jika masalah generik diperbaiki dalam
1.3
hal yang hebat tentang metode ini apakah ia bekerja pada kelas yang memilikiisEmpty()
metode! Bukan hanyaCollections
!Misalnya itu akan berhasil
String
juga!sumber
Ini bekerja:
sumber