1. 概要

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

以前、Hamcrest を使用したテストで、Hamcrest Matchersについて一般的に説明しました。このチュートリアルでは、TextMatchersのみに焦点を当てます。

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 の最新バージョンは、MavenCentralからダウンロードできます。

次に、HamcrestTextMatchersについて詳しく説明します。

3. テキスト平等マッチャー

もちろん、標準の isEqual()マッチャーを使用して、2つの文字列が等しいかどうかを確認できます。

さらに、 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()マッチャーを呼び出すことができます。

@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. 結論

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

いつものように、例の完全なソースコードは、GitHubにあります。