Усильте свои тестовые утверждения с помощью Hamcrest

Когда дело доходит до написания надежных и выразительных тестовых утверждений, Hamcrest меняет правила игры. Эта мощная библиотека Java предоставляет широкий спектр средств сопоставления, которые делают ваши тесты более читабельными и удобными в сопровождении. В этой статье мы погрузимся в мир Hamcrest и рассмотрим некоторые из его наиболее полезных методов. Итак, берите свой любимый напиток, садитесь поудобнее и давайте повышать уровень нашей тестовой игры!

  1. equalTo():
    Метод equalTo() – это простой, но удобный инструмент сопоставления, который проверяет, равно ли значение ожидаемому значению. Он идеально подходит для сравнения объектов, строк или любого другого типа данных, поддерживающего метод equals().
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
@Test
void testStringEquality() {
    String actual = "Hello";
    String expected = "Hello";
    assertThat(actual, equalTo(expected));
}
  1. is():
    Метод is()— еще один часто используемый метод сопоставления, который обеспечивает более читаемый способ выражения утверждений. Он действует как ярлык для equalTo()и улучшает читаемость ваших тестов.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
@Test
void testNumberComparison() {
    int actual = 42;
    assertThat(actual, is(42));
}
  1. greaterThan() и lessThan():
    Эти два средства сопоставления позволяют проверить, больше или меньше одно значение другого значения соответственно. Они особенно полезны при проверке числовых сравнений.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.lessThan;
@Test
void testNumberComparison() {
    int actual = 42;
    assertThat(actual, greaterThan(30));
    assertThat(actual, lessThan(50));
}
  1. containsString():
    Сопоставитель containsString()проверяет, содержит ли данная строка определенную подстроку. Он отлично подходит для тестирования сценариев, в которых вы ожидаете присутствия определенного текста.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
@Test
void testStringContainsSubstring() {
    String actual = "Hello, World!";
    assertThat(actual, containsString("Hello"));
}
  1. hasSize():
    Сопоставитель hasSize()идеально подходит для проверки размера коллекций или массивов. Это гарантирует, что фактический размер соответствует ожидаемому.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
@Test
void testCollectionSize() {
    List<String> names = Arrays.asList("John", "Jane", "Bob");
    assertThat(names, hasSize(3));
}
  1. anyOf():
    Метод anyOf()позволяет указать несколько сопоставителей, и утверждение будет выполнено, если какое-либо из сопоставителей окажется успешным. Это полезно, если у вас разные приемлемые условия для теста.
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
@Test
void testMultipleMatchers() {
    int actual = 42;
    assertThat(actual, anyOf(equalTo(42), greaterThan(50)));
}

Hamcrest — это фантастическая библиотека, которая повышает читабельность и выразительность утверждений ваших тестов. Используя широкий спектр средств сопоставления, вы можете сделать свои тесты более удобными в сопровождении и сократить время, затрачиваемое на отладку. Итак, зачем соглашаться на обыденные утверждения, если вы можете усилить их с помощью Хэмкреста? Попробуйте и испытайте радость от написания простых и мощных тестов!