当进行单元测试时,Java requireNonNull始终返回true

当进行单元测试时,Java requireNonNull始终返回true,java,unit-testing,junit,Java,Unit Testing,Junit,当使用JUnit进行单元测试时,我试图在我的对象上实现RequireNonnoll检查,我希望抛出一个异常,但从来没有 public TheClass(final String name) { requireNonNull(!StringUtils.isBlank(name), "name cannot be null/empty"); this.name = name; } //试验 @Test(expected = IllegalArgumentException.cla

当使用JUnit进行单元测试时,我试图在我的对象上实现RequireNonnoll检查,我希望抛出一个异常,但从来没有

public TheClass(final String name) {
    requireNonNull(!StringUtils.isBlank(name), "name cannot be null/empty");

    this.name = name;
}
//试验

@Test(expected = IllegalArgumentException.class)
public void testInstantiateWithNullName() {
    new TheClass(null);
}
有什么想法吗

Iv还使用“expected=NullPointerException.class”运行了测试

if(name != null)
您将布尔值传递给一个如果没有接收到null,将返回false的方法,因此它将始终认为它是非空的。如果您真的想使用requirennoull,那么您可以这样做

requireNonNull(name, "name cannot be null");
然而,我认为你真正想要的是

if(name != null && !name.isEmpty())

您的
StringUtils.isBlank
可能返回一个
boolean
,表示给定的
字符串是
null
还是空的

您正在将该
boolean
值传递给
requirennoull
。由于该值不是
null
,因此不会引发异常

直接传递
名称

requireNonNull(name, "name cannot be null/empty");
尽管您可能应该更改错误消息,因为这只检查参数是否为
null
。它不考虑参数为<代码>字符串< /代码>并检查它是否为空。

< p>用番石榴可以做:

checkArgument(StringUtils.isNotBlank(name), "name cannot be null/empty");

注意,如果isNotBlank为false,则抛出一个IllegalArgumentException

什么是
!StringUtils.isBlank
do?检查字符串是否为空…很好的解释:)从requireNonNull iv退出,以确保其不为null,也不为空…不使用ogGuava@Ronando写你自己的方法。我不知道有一种静态JDK方法可以检查
字符串是否为空。@Jean-FrançoisSavard Right,除非
name
null
。但是我们以前检查过它。