更新时间:2022-09-26 10:27:06 来源:极悦 浏览1620次
在某些情况下,我们需要断言给定的字符串是否为空。在 Java 中有很多方法可以做这样的断言。
让我们在这个快速教程中探索一些测试断言技术。
我们需要先获取一些依赖项。在 Maven 项目中,我们可以在pom.xml中添加以下依赖项:
JUnit:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
Hamcrest 核心:
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
</dependency>
Apache Commons 朗:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
AssertJ:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.11.1</version>
</dependency>
Google Guava:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
我们将使用String类中的isEmpty方法和JUnit 中的Assert类来验证给定的String是否为空。由于isEmpty 方法在输入String为空时返回 true,我们可以将它与 assertFalse方法一起使用:
assertFalse(text.isEmpty());
或者,我们也可以使用:
assertTrue(!text.isEmpty());
考虑到 text可能为空,另一种方法是使用assertNotEquals方法进行相等性检查:
assertNotEquals("", text);
或者:
assertNotSame("", text);
Hamcrest 是一个著名的框架,它提供了在 Java 生态系统中常用于单元测试的匹配器。
我们可以使用 Hamcrest CoreMatchers 类进行空字符串检查:
assertThat(text, CoreMatchers.not(isEmptyString()));
isEmptyString方法在IsEmptyString类中可用。
这也会在失败时返回 AssertionError,但输出更有用:
java.lang.AssertionError:
Expected: not an empty string
but: was ""
如果需要,要验证 String 既不为空也不为 null,我们可以使用isEmptyOrNullString:
assertThat(text, CoreMatchers.not(isEmptyOrNullString()));
要了解CoreMatchers类的其他方法,请阅读这篇之前发表的文章。
Apache Commons Lang库为java.lang API提供了许多帮助实用程序。
StringUtils类提供了一种我们可以用来检查空字符串的方法:
assertTrue(StringUtils.isNotBlank(text));
失败时,这将返回一个简单的AssertionError。
AssertJ 是一个开源的、社区驱动的库,用于在 Java 测试中编写流畅和丰富的断言。
AbstractCharSequenceAssert.isNotEmpty()方法 验证实际的CharSequence不为空,或者换句话说,它不为 null 并且长度为 1 或更多:
Assertions.assertThat(text).isNotEmpty()
失败时,将打印输出:
java.lang.AssertionError:
Expecting actual not to be empty
Guava是 Google 提供的一组核心库。
Guava Strings类中的isNullOrEmpty方法 可用于验证 String 是否为空(或 null):
assertFalse(Strings.isNullOrEmpty(text));
当没有其他输出消息失败时,这也会返回AssertionError 。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习