我需要在某个测试用例的日期之前/之后进行测试。如果可能,我想使用Hamcrest matchers。Hamcrest Date Matchers
Hamcrest(Java)有没有与日期合作的匹配器?如果是这样,我可以找到哪些包/类可以找到特定的日期匹配器功能?
我需要在某个测试用例的日期之前/之后进行测试。如果可能,我想使用Hamcrest matchers。Hamcrest Date Matchers
Hamcrest(Java)有没有与日期合作的匹配器?如果是这样,我可以找到哪些包/类可以找到特定的日期匹配器功能?
OrderingComparison::greaterThan匹配器将工作在任何类型可以比较自己(它在org.hamcrest.number
包,但它并不实际数量具体)。日期是这样一种类型。
你可以看看将被添加到hamcrest新的日期匹配器(我不知道什么时候想):
Date matchers discussion/code changes on github
快速浏览一下之后,似乎将有一个新的打包org.hamcrest.date含有:
有由库在https://github.com/eXparity/hamcrest-date提供hamcrest日期匹配器的库,它也可用于行家,常春藤,等在
<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());
还有Cirneco extension。它具有若干Date
特定匹配器(例如monday()
)以及由于实施Comparable
而应用于日期的其他(例如参见between()
,betweenInclusive()
)。该计划还支持JDK7版本库中的Joda Time以及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>
Matchers#greaterThan
匹配器与Date
s和其他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)))
谢谢。看起来他们已经摆脱了这个班,转而采用静态工厂方法,这使得一个非常稳定的链接成为不可能,但我已经尽可能地修复了它。 – 2013-09-28 20:57:12
的确如此。还有一些扩展提供了一些更易于阅读的方法。例如,[Cirneco](https://github.com/ozimov/cirneco)提供了匹配器'J7Matchers :: after',它是'OrderingComparison :: greaterThan'的别名。从我的观点来看,_sematic_在单元测试中一直都很重要,这就是为什么我通常更喜欢Google Truth提供的无用方法,但有时我必须在传统项目中处理Hamcrest。 – JeanValjean 2016-01-09 23:31:11