«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.