1. 概述
在某些场景下,我们需要验证一个 String 是否为空。Java 中有多种方式可以实现这类断言。
本篇将带你快速了解几种常见的字符串非空断言方法。
2. Maven 依赖
我们先引入几个必要的依赖。在 Maven 项目中,可以在 pom.xml
中添加以下依赖:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
3. 使用 JUnit
我们可以使用 String
类的 isEmpty 方法配合 JUnit 的 Assert 类来判断字符串是否非空。
因为 isEmpty()
方法在字符串为空时返回 true
,所以我们可以这样写:
assertFalse(text.isEmpty());
或者这样:
assertTrue(!text.isEmpty());
⚠️ 但如果 text
是 null
,上面的写法会抛出 NullPointerException
。所以更稳妥的方式是使用 assertNotEquals
:
assertNotEquals("", text);
或者:
assertNotSame("", text);
这些断言失败时都会抛出 AssertionError
。
4. 使用 Hamcrest Core
Hamcrest 是一个广泛使用的断言框架,常用于 Java 单元测试。
我们可以使用 Hamcrest 的 CoreMatchers
类来判断字符串是否非空:
assertThat(text, CoreMatchers.not(isEmptyString()));
其中 isEmptyString()
方法来自 IsEmptyString 类。
如果断言失败,会输出更友好的错误信息:
java.lang.AssertionError:
Expected: not an empty string
but: was ""
如果需要同时判断字符串既不为 null
也不为空,可以使用:
assertThat(text, CoreMatchers.not(isEmptyOrNullString()));
更多关于 CoreMatchers
的内容可以参考 这篇文章。
5. 使用 Apache Commons Lang
Apache Commons Lang 提供了大量对 java.lang
API 的增强工具类。
我们可以使用 StringUtils
类来判断字符串是否非空:
assertTrue(StringUtils.isNotBlank(text));
如果断言失败,会抛出普通的 AssertionError
。
更多关于 Apache Commons Lang 字符串处理的内容可以参考 这篇文章。
6. 使用 AssertJ
AssertJ 是一个开源、社区驱动的断言库,支持编写流畅、丰富的断言语句。
使用 AbstractCharSequenceAssert.isNotEmpty()
方法可以判断一个 CharSequence
是否非空:
Assertions.assertThat(text).isNotEmpty();
断言失败时会输出:
java.lang.AssertionError:
Expecting actual not to be empty
关于 AssertJ 的入门介绍可以参考 这篇文章。
7. 使用 Google Guava
Guava 是 Google 提供的一套核心库。
我们可以使用 Guava 中 Strings
类的 isNullOrEmpty
方法来判断字符串是否为空或 null
:
assertFalse(Strings.isNullOrEmpty(text));
断言失败时也会抛出 AssertionError
,但不会有额外的错误信息。
更多关于 Guava 的内容可以参考 这里。
8. 总结
本文介绍了多种在 Java 中判断字符串是否非空的方法,包括:
✅ JUnit 原生断言
✅ Hamcrest 匹配器
✅ Apache Commons Lang 工具类
✅ AssertJ 流畅断言
✅ Google Guava 的辅助方法
每种方式都有其适用场景,根据项目依赖和风格选择即可。
完整代码示例可以在 GitHub 上找到。