我有一个非常简单的脚本,用于在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
这很奇怪因为星期六到星期一确实包含星期天。
我认为断言失败的唯一原因是,如果一周从星期日开始,那么星期日不会在星期六和星期一之间。
但是我的脚本方式,断言不应该通过吗?
答案 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