Bagaimana cara menegaskan sesuatu yang tidak beres dengan Hamcrest?

144

Bagaimana saya assertThatsesuatu null?

sebagai contoh

 assertThat(attr.getValue(), is(""));

Tetapi saya mendapatkan pesan kesalahan yang mengatakan bahwa saya tidak bisa nullmasuk is(null).

pengguna2811419
sumber

Jawaban:

256

Anda dapat menggunakan IsNull.nullValue()metode:

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;

assertThat(attr.getValue(), is(nullValue()));
Rohit Jain
sumber
katanya metode nullValue () tidak didefinisikan
user2811419
2
@ user2811419 Anda perlu mengimpor IsNullIni metode statis di kelas itu. Lakukan saja static import, atau gunakan IsNull.nullValue().
Rohit Jain
Tambahkan import static org.hamcrest.core.IsNull.nullValue;ke kelas Anda.
Rohit Jain
4
Dalam versi Hamcrest yang lebih baru namespace telah berubah dan Anda perlu import static org.hamcrest.CoreMatchers.nullValue.
ThomasW
30

mengapa tidak menggunakan assertNull(object)/ assertNotNull(object)?

Chetya
sumber
8
+1 Saya biasanya lebih suka pernyataan Hamscrest tetapi ini adalah satu kasus di mana pernyataan Junit lebih mudah dibaca, IMO.
spaaarky21
9
assertThat () memberikan pencatatan yang jauh lebih baik daripada banyak metode * lainnya. Standar pengkodean uji yang saya gunakan nikmat assertThat () di atas semua metode pernyataan lain untuk alasan ini.
efelton
3
Keuntungan utama ketika menggunakan assertThat vs assertNul adalah bahwa ia lebih dekat ke frasa yang diucapkan Englsih, hanya mencoba membaca pernyataan Anda untuk memeriksanya.
Belgoros
Menggunakan errorCollector adalah alasan yang baik untuk menggunakan pencocokan hamcrest yang bertentangan dengan assertNull / assertNotNull.
Tyler MacMillan
15

Jika mau hamcrest, Anda bisa melakukannya

import static org.hamcrest.Matchers.nullValue;

assertThat(attr.getValue(), is(nullValue()));

Di dalam Junitkamu bisa lakukan

import static junit.framework.Assert.assertNull;
assertNull(object);
Sajan Chandran
sumber
11

Gunakan yang berikut (dari Hamcrest):

assertThat(attr.getValue(), is(nullValue()));

Di Kotlin isdisediakan jadi gunakan:

assertThat(attr.getValue(), `is`(nullValue()));
Macan kumbang
sumber
Apakah ada alternatif di mana kita tidak harus melarikan diri is?
VIN