Contents

Assert字符串不是空

1. 概述

在某些情况下,我们需要断言给定的字符串是否为空。在 Java 中有很多方法可以做这样的断言。

让我们在这个快速教程中探索一些测试断言技术。

2. Maven依赖

我们需要先获取一些依赖项。在 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 lang3

<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>

guava

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

3. 使用 JUnit

我们将使用String 类中的isEmpty 方法和JUnit 中的Assert 类来验证给定的String是否为空。**由于isEmpty 方法在输入String为空时返回 true,我们可以将它与 assertFalse方法一起使用:

assertFalse(text.isEmpty());

或者,我们也可以使用:

assertTrue(!text.isEmpty());

**考虑到 text可能为空,**另一种方法是使用assertNotEquals方法进行相等性检查:

assertNotEquals("", text);

或者:

assertNotSame("", text);

在此处 查看我们关于 JUnit 断言的深入指南。

所有这些断言在失败时都会返回一个AssertionError

4. 使用 Hamcrest 核心

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类的其他方法,请阅读这篇 之前发表的文章。

5. 使用 Apache Commons Lang

Apache Commons Lang 库为java.lang API提供了许多帮助实用程序。

StringUtils类提供了一种我们可以用来检查空字符串的方法:

assertTrue(StringUtils.isNotBlank(text));

失败时,这将返回一个简单的AssertionError

要了解有关使用 Apache Commons Lang 处理字符串的更多信息,请阅读本文  。

6. 使用 AssertJ

AssertJ  是一个开源的、社区驱动的库,用于在 Java 测试中编写流畅和丰富的断言。 AbstractCharSequenceAssert.isNotEmpty()方法 验证实际的CharSequence不为空,或者换句话说,它不为 null 并且长度为 1 或更多

Assertions.assertThat(text).isNotEmpty()

失败时,将打印输出:

java.lang.AssertionError: 
Expecting actual not to be empty

我们在这里 有一篇关于 AssertJ 的不错的介绍性文章。

7. Guava

Guava 是 Google 提供的一组核心库。

Guava Strings类中的isNullOrEmpty方法 可用于验证 String 是否为空(或 null):

assertFalse(Strings.isNullOrEmpty(text));

当没有其他输出消息失败时,这也会返回AssertionError