1概要

このチュートリアルでは、Hamcrest Text Matchersについて説明します。

Hamcrest Matchersについては、リンク先で次のリンクで説明しました。


2 Mavenの設定

まず、

pom.xml

に次の依存関係を追加する必要があります。

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>java-hamcrest</artifactId>
    <version>2.0.0.0</version>
    <scope>test</scope>
</dependency>



java-hamcrest


の最新バージョンはMaven Centralからダウンロードできます。

それでは、Hamcrest Text Matchersに飛び込みましょう。


3テキスト等価マッチャー

もちろん、標準の

isEqual()

matcherを使用して、2つのStringが等しいかどうかを確認できます。

さらに、

String

型に固有の2つのマッチャーがあります。


equalToIgnoringCase()

および

equalToIgnoringWhiteSpace().

2つの

Strings

が等しいかどうかを確認しましょう。

@Test
public void whenTwoStringsAreEqual__thenCorrect() {
    String first = "hello";
    String second = "Hello";

    assertThat(first, equalToIgnoringCase(second));
}

先頭と末尾の空白を無視して、2つの

Strings

が等しいかどうかも確認できます。

@Test
public void whenTwoStringsAreEqualWithWhiteSpace__thenCorrect() {
    String first = "hello";
    String second = "   Hello   ";

    assertThat(first, equalToIgnoringWhiteSpace(second));
}


4空のテキストマッチャー


blankString()

および

blankOrNullString()

マッチャーを使用して、

String

が空白であるかどうかを確認できます。

@Test
public void whenStringIsBlank__thenCorrect() {
    String first = "  ";
    String second = null;

    assertThat(first, blankString());
    assertThat(first, blankOrNullString());
    assertThat(second, blankOrNullString());
}

一方、

String

が空かどうかを検証したい場合は、

emptyString()

マッチャーを使用できます。

@Test
public void whenStringIsEmpty__thenCorrect() {
    String first = "";
    String second = null;

    assertThat(first, emptyString());
    assertThat(first, emptyOrNullString());
    assertThat(second, emptyOrNullString());
}


5パターンマッチャー


matchesPattern()

関数を使って、与えられたテキストが正規表現にマッチするかどうかをチェックすることもできます。

@Test
public void whenStringMatchPattern__thenCorrect() {
    String first = "hello";

    assertThat(first, matchesPattern("[a-z]+"));
}


6. サブストリングマッチャー


containsString()

関数または__containsStringIgnoringCase()を使用して、テキストに別のサブテキストが含まれているかどうかを判断できます。

@Test
public void whenVerifyStringContains__thenCorrect() {
    String first = "hello";

    assertThat(first, containsString("lo"));
    assertThat(first, containsStringIgnoringCase("EL"));
}

サブストリングが特定の順序で並んでいると予想される場合は、

stringContainsInOrder()

matcherを呼び出すことができます。

@Test
public void whenVerifyStringContainsInOrder__thenCorrect() {
    String first = "hello";

    assertThat(first, stringContainsInOrder("e","l","o"));
}

次に、

String

が特定の

String

で始まることを確認する方法を見てみましょう。

@Test
public void whenVerifyStringStartsWith__thenCorrect() {
    String first = "hello";

    assertThat(first, startsWith("he"));
    assertThat(first, startsWithIgnoringCase("HEL"));
}

そして最後に、

String

が指定された

String

で終わっているかどうかを確認できます。

@Test
public void whenVerifyStringEndsWith__thenCorrect() {
    String first = "hello";

    assertThat(first, endsWith("lo"));
    assertThat(first, endsWithIgnoringCase("LO"));
}


7. 結論

このクイックチュートリアルでは、Hamcrest Text Matchersについて説明しました。

いつものように、例の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/guava/src/test/java/org/baeldung/hamcrest[over on GitHub]にあります。