ハムクレストテキストマッチャー

Hamcrestテキストマッチャー

1. 概要

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

ハムクレストマッチャーについては、以前はtesting with Hamcrestで一般的に説明しましたが、このチュートリアルでは、Textマッチャーのみに焦点を当てます。

2. Mavenの構成

まず、pom.xmlに次の依存関係を追加する必要があります。


    org.hamcrest
    java-hamcrest
    2.0.0.0
    test

java-hamcrestの最新バージョンは、MavenCentralからダウンロードできます。

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

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

このクイックチュートリアルでは、Hamcrestテキストマッチャーについて説明しました。

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