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).

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()));

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)?


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);

11

Gunakan yang berikut (dari Hamcrest):

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

Di Kotlin isdisediakan jadi gunakan:

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

Apakah ada alternatif di mana kita tidak harus melarikan diri is?
VIN
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.