Làm thế nào để khẳng định một cái gì đó là null với Hamcrest?


144

Làm thế nào tôi có assertThatmột cái gì đó là null?

ví dụ

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

Nhưng tôi nhận được một thông báo lỗi rằng tôi không thể có nulltrong is(null).

Câu trả lời:


256

Bạn có thể sử dụng IsNull.nullValue()phương pháp:

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

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

nó nói phương thức nullValue () không được xác định
user2811419

2
@ người dùng2811419. Bạn cần nhập IsNullĐó là một phương thức tĩnh trong lớp đó. Chỉ cần làm static import, hoặc sử dụng IsNull.nullValue().
Rohit Jain

Thêm import static org.hamcrest.core.IsNull.nullValue;vào lớp học của bạn.
Rohit Jain

4
Trong các phiên bản mới hơn của Hamcrest, không gian tên đã thay đổi và bạn cần import static org.hamcrest.CoreMatchers.nullValue.
ThomasW

30

Tại sao không sử dụng assertNull(object)/ assertNotNull(object)?


8
+1 Tôi thường thích các xác nhận Hamscrest nhưng đây là một trường hợp trong đó xác nhận Junit dễ đọc hơn, IMO.
spaaarky21

9
assertThat () cung cấp khả năng ghi nhật ký tốt hơn nhiều so với các phương thức khẳng định * khác. Tiêu chuẩn mã hóa thử nghiệm mà tôi sử dụng ủng hộ assertThat () hơn tất cả các phương thức xác nhận khác vì lý do này.
efelton

3
Ưu điểm chính khi sử dụng assertThat vs assertNul là nó gần với cụm từ nói tiếng Anh hơn, chỉ cần cố gắng đọc bất kỳ xác nhận nào của bạn để kiểm tra.
belgoros

Sử dụng errorCollector là một lý do chính đáng để sử dụng các trình so khớp hamcrest đối lập với assertNull / assertNotNull.
Tyler MacMillan

15

Nếu bạn muốn hamcrest, bạn có thể làm

import static org.hamcrest.Matchers.nullValue;

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

Trong Junitbạn có thể làm

import static junit.framework.Assert.assertNull;
assertNull(object);

11

Sử dụng như sau (từ Hamcrest):

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

Trong Kotlin isđược bảo lưu nên sử dụng:

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

Có cách nào khác để chúng ta không phải trốn thoát iskhông?
VIN
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.