文字列が空ではないJavaのテストアサーション

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.8</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>26.0-jre</version>
</dependency>

3 JUnit を使う

  • isEmpty メソッドを使用します。 JUnitのhttp://junit.sourceforge.net/javadoc/org/junit/Assert.html[ Assert ]クラスとともに.html[String] クラスを指定して、指定された String が空でないかどうかを検証します。** isEmpty 以降入力 String が空の場合、methodはtrueを返し、 assertFalse メソッドと一緒に使用できます。

assertFalse(text.isEmpty());

または、我々はまた使用することができます:

assertTrue(!text.isEmpty());
  • text がnullになる可能性があるため、** 別の方法は assertNotEquals メソッドを使用して等価性チェックを行うことです。

assertNotEquals("", text);

または

assertNotSame("", text);

JUnitアサーションに関する詳細なガイドhttps://www.baeldung.com/junit-assertions[ここ]をチェックしてください。

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

4 Hamcrest Core を使う

Hamcrest は、Javaエコシステムの単体テストに一般的に使用されるmatcherを提供する有名なフレームワークです。

  • 空の文字列チェックにHamcrest __CoreMatchers __classを利用することができます

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

isEmptyString メソッドはhttp://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/text/IsEmptyString.html[ IsEmptyString ]クラスで利用できます。

失敗した場合もAssertionErrorを返しますが、より役立つ出力が得られます。

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

必要に応じて、Stringが空でもnullでもないことを確認するために、 isEmptyOrNullString を使用できます。

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

CoreMatchers クラスの他のメソッドについては、https://www.baeldung.com/hamcrest-core-matchers[この]以前に公開された記事を読んでください。

5 Apache Commons Lang を使う

Apache Commons Lang ライブラリには、 java.lang API用の多数のヘルパーユーティリティがあります。

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

assertTrue(StringUtils.isNotBlank(text));

失敗した場合、これは単純な__AssertionErrorを返します。

Apache Commons Langによる文字列処理の詳細については、https://www.baeldung.com/string-processing-commons-lang[this]の記事を参照してください。

6. AssertJ を使う

AssertJ はオープンソースで、Javaテストで流暢で豊かなアサーションを書くためのコミュニティ主導のライブラリです。

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

Assertions.assertThat(text).isNotEmpty()

失敗した場合、これは出力を表示します。

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

私たちはAssertJ here に関する素晴らしい紹介記事を持っています。

7. Google Guava を使用する

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

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

assertFalse(Strings.isNullOrEmpty(text));

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

Guava APIに関する他の記事を調べるには、https://www.baeldung.com/category/guava/[ここ]のリンクをたどってください。

8結論

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

いつものように完全なコードスニペットはhttps://github.com/eugenp/tutorials/tree/master/java-strings[over on GitHub]で利用可能です。