Unit тесты с Hamcrest В посте хочу рассказать про довольно полезную либу. Hamcrest - это часто используемая библиотека для написания модульных тестов в Java в помощь JUnit. В замен использования многочисленных методов assert JUnit, Hamcrest предоставляет единственный оператор assertThat и стандартный набор сопоставителей (Matcher), которые закрывают большую часть необходимых кейсов. Примеры тестирования строковых значений: String str = "Hello"; assertThat(str, equalToIgnoringCase("hello")); assertThat(str, startsWith("H")); assertThat(str, containsString("elo")); В принципе из названий методов явно понятно, что они проверяют. Этот фреймворк поддерживает работу со всеми типами данных и коллекций. Но основное его преимущество это возможность написания лаконичных проверок для произвольных Java объектов. Помимо проверки определенных полей, мы можем сравнивать объекты целиком. Вам не нужно писать пошаговое сравнение всех полей объектов, за вас это сделает Hamcrest: public class Book { String author; String title; ... } @Test public void test() { Book book1 = new Book("Robert Martin", "Clean Code"); Book book2 = new Book("Joshua Bloch", "Effective Java"); assertThat(book1, instanceOf(Book.class)); assertThat(book1, hasProperty("title")); assertThat(book1, samePropertyValuesAs(book2)); } Третий assertThat провалит проверку, т.к. значения полей у объектов book1 и book2 разные, при этом он покажет детализированную информацию об ошибках: Expected: same property values as Book [author: "Joshua Bloch", title: "Effective Java"] but: author was "Robert Martin" Используя подобные механизмы вы значительно сократите время написания тестов, а так же улучшите их читаемость. upd: Либа достоточно устаревшая, и не поддерживается, как написали в комментах. В других постах рассмотрим аналоги.
6
5
1