如何断定Hamcrest无效?


144

如何将我assertThat的东西是null

例如

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

但是我收到一个错误消息,说我不能null进入is(null)

Answers:


256

您可以使用IsNull.nullValue()方法:

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

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

它说未定义方法nullValue()
user2811419 2013年

2
@ user2811419。您需要导入IsNull它是该类中的静态方法。只是做static import,还是用IsNull.nullValue()
Rohit Jain

添加import static org.hamcrest.core.IsNull.nullValue;到您的课程。
Rohit Jain

4
在较新版本的Hamcrest中,名称空间已更改,您需要import static org.hamcrest.CoreMatchers.nullValue
ThomasW

30

为什么不使用assertNull(object)/ assertNotNull(object)


8
+1我通常更喜欢Hamscrest断言,但是在这种情况下,IMO的Junit断言更具可读性。
spaaarky14年

9
与许多其他assert *方法相比,assertThat()提供更好的日志记录。由于这个原因,我使用的测试编码标准比其他所有断言方法更支持assertThat()。
efelton 2015年

3
使用assertThat与assertNul的主要优点是,它更接近于Englsih口头短语,只需尝试阅读您的任何断言进行检查即可。
belgoros

使用errorCollector是使用与assertNull / assertNotNull相对的hamcrest匹配器的好理由。
泰勒麦克米伦

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.