Hamcrest Дата Matchers
Мне нужно, чтобы проверить до/после даты в определенном тесте. Я хотел бы использовать Hamcrest matchers если это возможно.
есть ли какие-либо сопоставители для Hamcrest (Java) для работы с датами? Если да, то в каком пакете/классе я найду конкретные функции сопоставления дат?
6 ответов
на OrderingComparison:: greaterThan matcher будет работать на любом типе, который сопоставим с собой (он находится в org.hamcrest.number
пакет, но на самом деле он не зависит от номера). Дата-это такой тип.
существует библиотека Hamcrest даты matchers, предоставляемых библиотекой в https://github.com/eXparity/hamcrest-date что также доступно для maven, плюща, etc на
<dependency>
<groupId>org.exparity</groupId>
<artifactId>hamcrest-date</artifactId>
<version>1.1.0</version>
</dependency>
он поддерживает различные сопоставители для дат, поэтому позволяет создавать такие конструкции, как
Date myBirthday = new Date();
MatcherAssert.assertThat(myBirthday, DateMatchers.after(Moments.today()));
или
Date myBirthday = new Date();
MatcherAssert.assertThat(myBirthday, DateMatchers.isToday());
есть некоторые расширения hamcrest, которые могут облегчить некоторые из тестирования, связанные с датами. Пожалуйста!--1-->регистрация здесь.
вы можете взглянуть на новые Сопоставители даты, которые будут добавлены в hamcrest (я не знаю, когда думал):
дата сопоставления обсуждение / изменения кода на github
после быстрого взгляда кажется, что будет новый пакет org.hamcrest.дата содержащий:
- IsAfter
- IsBefore
- IsSameDayOfTheMonth
- IsSameDayOfTheWeek
- IsSameDayOfTheYear
- IsSameHour
- IsSameInstant
- IsSameMinute
- IsSameMonth
- IsSameSecond
- IsSameYear
- IsWithin
на Matchers#greaterThan
matcher работает с Date
и другие Comparable
объекты.
вот способ проверить, что ваша дата больше или равна ( ≥ ) некоторой ожидаемой дате:
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.core.AnyOf.anyOf;
...
Date expectedMin = new Date()
// Execute the method being tested
Date resultDate = getDate();
// Validate
assertThat(resultDate, anyOf(greaterThan(expectedMin), equalTo(expectedMin)))
есть еще расширение Cirneco. Он имеет несколько Date
конкретных вычислителей (например,monday()
) и другие, которые применяются к датам из-за реализации Comparable
(см., например,between()
, betweenInclusive()
). Планируется также поддерживать время Joda в версии библиотеки JDK7 и новые классы на основе дат в версии JDK8 (в основном LocalDate
).
вы можете делать утверждения типа:
final Date date = new Date();
assertThat(date, is(monday())); // JUnit style
given(date).assertIs(monday()); // Cirneco style
вы можете использовать следующую зависимость для Проект JDK7-совместимый:
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>java7-hamcrest-matchers</artifactId>
<version>0.7.0</version>
</dependency>
или следующее, Если вы используете JDK8
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>java8-hamcrest-matchers</artifactId>
<version>0.7.0</version>
</dependency>