1. 概要

特定のシナリオでは、特定のStringが空であるかどうかをアサートする必要があります。 Javaでこのようなアサーションを実行する方法はかなりあります。

このクイックチュートリアルでは、これらのテストアサーションテクニックのいくつかを調べてみましょう。

2. Mavenの依存関係

最初にいくつかの依存関係を取得する必要があります。 Mavenプロジェクトでは、pom.xmlに次の依存関係を追加できます。

JUnit

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

Hamcrest Core

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-core</artifactId>
    <version>1.3</version>
</dependency>

Apache Commons Lang

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

3. JUnitの使用

StringクラスのisEmptyメソッドとJUnitのAssertクラスを使用して、指定された文字列が空でないかどうかを確認します。 isEmpty メソッドは、入力がtrueの場合にtrueを返すため String は空であり、assertFalseメソッドと一緒に使用できます。

assertFalse(text.isEmpty());

または、次を使用することもできます。

assertTrue(!text.isEmpty());

テキストがnullである可能性があるため、別の方法は、assertNotEqualsメソッドを使用して同等性チェックを実行することです。

assertNotEquals("", text);

または:

assertNotSame("", text);

JUnitアサーションここに関する詳細なガイドを確認してください。

これらのアサーションはすべて、失敗するとAssertionError。を返します。

4. ハムクレストコアの使用

Hamcrest は、Javaエコシステムでの単体テストに一般的に使用されるマッチャーを提供するよく知られたフレームワークです。

空の文字列チェックにHamcrestCoreMatchersクラスを利用できます

assertThat(text, CoreMatchers.not(isEmptyString()));

isEmptyString メソッドは、IsEmptyStringクラスで使用できます。

これは、失敗したときにAssertionErrorも返しますが、より役立つ出力があります。

java.lang.AssertionError: 
Expected: not an empty string
     but: was ""

必要に応じて、文字列が空でもnullでもないことを確認するには、isEmptyOrNullStringを使用できます。

assertThat(text, CoreMatchers.not(isEmptyOrNullString()));

CoreMatchers クラスの他のメソッドについては、以前に公開されたthisの記事を参照してください。

5. ApacheCommonsLangの使用

Apache Commons Lang ライブラリは、 java.langAPI用のヘルパーユーティリティのホストを提供します。

StringUtilsクラスは、空のStringsをチェックするために使用できるメソッドを提供します。

assertTrue(StringUtils.isNotBlank(text));

失敗すると、単純なAssertionError。が返されます。

Apache Commons Langを使用した文字列処理の詳細については、thisの記事を参照してください。

6. AssertJの使用

AssertJ はオープンソースであり、Javaテストで流暢で豊富なアサーションを作成するために使用されるコミュニティ主導のライブラリです。

メソッドAbstractCharSequenceAssert.isNotEmpty()は、実際の CharSequence が空でないこと、つまりがヌルではなく、長さが1以上であることを確認します。

Assertions.assertThat(text).isNotEmpty()

失敗すると、次の出力が出力されます。

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

AssertJここに関する素晴らしい紹介記事があります。

7. GoogleGuavaを使用する

Guava は、Googleが提供するコアライブラリのセットです。

Guava StringsクラスのメソッドisNullOrEmptyを使用して、文字列が空かどうかを確認できます(またはnull)。

assertFalse(Strings.isNullOrEmpty(text));

これは、他の出力メッセージなしで失敗した場合にもAssertionErrorを返します。

Guava APIに関する他の記事を調べるには、リンクこちらをたどってください。

8. 結論

このクイックチュートリアルでは、特定のStringが空であるかどうかをアサートする方法を見つけました。

いつものように、完全なコードスニペットはGitHubで利用できます。