为什么这个Groovy日期断言失败了?

时间:2014-08-16 18:58:17

标签: groovy assertions

我有一个非常简单的脚本,用于在Groovy中使用日期范围。它如下:

def today = new Date()
def yesterday = today - 1
def tomorrow = today + 1
assert [yesterday..tomorrow].contains(today)
assert [yesterday..tomorrow].size() == 3  

断言失败,我收到错误:

Assertion failed: 

assert [yesterday..tomorrow].contains(today)
        |          |         |        |
        |          |         false    Sun Aug 17 00:24:17 IST 2014
        |          Mon Aug 18 00:24:17 IST 2014
        Sat Aug 16 00:24:17 IST 2014  

这很奇怪因为星期六到星期一确实包含星期天。

我认为断言失败的唯一原因是,如果一周从星期日开始,那么星期日不会在星期六和星期一之间。

但是我的脚本方式,断言不应该通过吗?

1 个答案:

答案 0 :(得分:5)

不,它不应该。

您已将范围放入集合中,即将范围作为其单个元素的列表。

相反,这样做:

today     = new Date()
yesterday = today - 1
tomorrow  = today + 1

assert (yesterday..tomorrow).contains(today)
assert (yesterday..tomorrow).size() == 3  

请务必检查您的假设,例如,检查您调用方法的类型和长度:

[yesterday..tomorrow].size      => 1
[yesterday..tomorrow].class     => class java.util.ArrayList
[yesterday..tomorrow][0].class  => class groovy.lang.ObjectRange