当进行单元测试时,Java requireNonNull始终返回true
当使用JUnit进行单元测试时,我试图在我的对象上实现RequireNonnoll检查,我希望抛出一个异常,但从来没有当进行单元测试时,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
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
。但是我们以前检查过它。