«1. Обзор

В этом уроке мы рассмотрим текстовые сопоставления Hamcrest.

Мы обсуждали Hamcrest Matchers в целом перед тестированием Hamcrest, в этом уроке мы сосредоточимся только на Text 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().

Кроме того, у нас есть два сопоставителя, специфичные для типов String: equalToIgnoringCase() и equalToIgnoringWhiteSpace().

Давайте проверим, равны ли две строки, игнорируя регистр:

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

    assertThat(first, equalToIgnoringCase(second));
}

Мы также можем проверить, равны ли две строки, игнорируя начальные и конечные пробелы:

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

    assertThat(first, equalToIgnoringWhiteSpace(second));
}

4. Пустой текст Сопоставители

Мы можем проверить, является ли строка пустой, т. е. содержит только пробелы, используя сопоставители BlankString() и BlankOrNullString():

@Test
public void whenStringIsBlank_thenCorrect() {
    String first = "  ";
    String second = null;
    
    assertThat(first, blankString());
    assertThat(first, blankOrNullString());
    assertThat(second, blankOrNullString());
}

С другой стороны, если мы хотим проверить, является ли строка пуст, мы можем использовать сопоставители emptyString():

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

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

5. Сопоставители шаблонов

Мы также можем проверить, соответствует ли заданный текст регулярному выражению, используя функциюmatchPattern():

@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"));
}

Далее, давайте посмотрим, как проверить, что строка начинается с заданной строки:

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

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

И, наконец, мы можем проверить, заканчивается ли строка на конкретный d String:

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

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

7. Заключение

В этом кратком руководстве мы рассмотрели текстовые сопоставления Hamcrest.

Как всегда, полный исходный код примеров можно найти на GitHub.