วิธีการยืนยันสิ่งที่เป็นโมฆะกับ Hamcrest?


144

ฉันจะทำassertThatยังnullไงดี?

ตัวอย่างเช่น

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

แต่ฉันได้รับข้อผิดพลาดบอกว่าฉันไม่สามารถมีในnullis(null)

คำตอบ:


256

คุณสามารถใช้IsNull.nullValue()วิธีการ:

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

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

มันบอกว่าวิธีการ nullValue () ไม่ได้กำหนด
2811419

2
@ user2811419 คุณต้องนำเข้าIsNullมันเป็นวิธีการคงที่ในชั้นเรียนนั้น เพียงแค่ทำหรือการใช้งานstatic import IsNull.nullValue()
Rohit Jain

เพิ่มimport static org.hamcrest.core.IsNull.nullValue;ในชั้นเรียนของคุณ
Rohit Jain

4
ในรุ่นใหม่ของ Hamcrest namespace import static org.hamcrest.CoreMatchers.nullValueที่มีการเปลี่ยนแปลงและคุณจำเป็นต้อง
ThomasW

30

ทำไมไม่ใช้assertNull(object)/ assertNotNull(object)?


8
+1 โดยทั่วไปฉันชอบการยืนยันแบบ Hamscrest แต่นี่เป็นกรณีหนึ่งที่การยืนยัน Junit นั้นอ่านง่ายกว่า IMO
spaaarky21

9
assertThat () ให้การบันทึกที่ดียิ่งขึ้นซึ่งวิธีการยืนยันอื่น ๆ อีกมากมาย มาตรฐานการเข้ารหัสที่ฉันใช้จะใช้ assertThat () กับวิธีการยืนยันอื่น ๆ ด้วยเหตุผลนี้
efelton

3
ข้อได้เปรียบหลักเมื่อใช้ assert นั่นเทียบกับ assertNul นั่นคือมันใกล้กับวลีภาษาอังกฤษของ Englsih เพียงลองอ่านคำยืนยันของคุณเพื่อตรวจสอบ
belgoros

การใช้ errorCollector เป็นเหตุผลที่ดีในการใช้ Hamcrest matchers ซึ่งตรงข้ามกับ assertNull / assertNotNull
Tyler MacMillan

15

ถ้าคุณต้องการhamcrestคุณสามารถทำได้

import static org.hamcrest.Matchers.nullValue;

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

ในJunitสิ่งที่คุณสามารถทำได้

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

11

ใช้สิ่งต่อไปนี้ (จาก Hamcrest):

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

ใน Kotlin isสงวนไว้ให้ใช้:

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

มีทางเลือกอื่นที่เราไม่ต้องหลบหนีisหรือไม่?
VIN
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.