汉克雷斯特数比较使用

2022-08-31 15:49:07

在Hamcrest中,有没有办法比较数字范围内的数字?我正在寻找这样的东西:

assertThat(50L, is(between(12L, 1658L)));

答案 1

Jeff 解决方案的另一种方法是使用 :both

assertThat(50L, is(both(greaterThan(12L)).and(lessThan(1658L))));

我认为这是相当可读的。如果检查失败,您还会收到一条错误消息:

预期:是(大于 <50L 的值>小于 <1658L>)得到:<50L>


答案 2

我不认为这是核心hamcrest匹配器的一部分,但你可以做这样的事情:between

assertThat(number, allOf(greaterThan(min),lessThan(max)));

这仍然有点丑陋,因此您可以在

assertThat(number, between(min,max))

和看起来像between

allOf(greaterThan(min),lessThan(max))

仍然不是一个梦幻般的解决方案,但它读起来像一个hamcrest matcher。

如果你找不到一个公开可用的,那么写你自己的匹配器 http://code.google.com/p/hamcrest/wiki/Tutorial 是微不足道between


推荐