在编写集成测试时,我期待响应中的硬编码日期。
基本上我硬编码expected date value '2020-11-10T00:00:00.000-05:00'
并运行new GregorianCalendar(2020, 10, 10).getTime()
当我在本地放置并断言并运行它时,它会通过,但是当相同的代码被推送到bamboo构建服务器时,它生成的actualValue为'2020-11-10T00:00:00.000Z'
,因此我的测试失败了。
为什么同一个calendar.getTime生成两个不同的时间,是因为服务器机器配置为GMT?
我可以做同样的事情或任何其他解决方法吗?
注意:在没有时间的情况下使字符串或比较日期不是一个选项,因为我使用的是Spring MockWebServiceServer,我必须对responseXML进行硬编码并在Enum中指定日期。
REQUESTAUTOMATESETTLEMENTWORKCASE("<aut:AutomateSettlementWorkcaseRequest xmlns:aut=\"http://www.abcd.com/abcd/workflow/services/workcase/model/AutomateSettlementWorkcase_1_0_0\">" +
" <aut:customerAccountId>5049903033584324</aut:customerAccountId>\n" +
" <aut:settlementDate>2020-11-10T00:00:00.000-05:00</aut:settlementDate>\n" +
" </aut:AutomateSettlementWorkcaseRequest>"),
答案 0 :(得分:3)
输入数据中的“-5”部分将其丢弃...理想情况下,您应在构建日历时指定时区,然后将其设置为UTC时间(例如)。基本上,2020-11-10T00:00:00.000-05:00
与2020-11-10T05:00:00.000Z
是同一时刻。
现在,我们不知道的是,保留UTC的偏移对您来说是否重要。如果是,则需要在日历中设置适当的时区 - 与生成输入数据的规则具有相同的规则。如果不是,我会使用UTC并适当地设置时间。
我个人建议使用Joda Time而不是Calendar
和Date
- 这是一个很多更好的日期和时间API。对于初学者来说,没有基于0的月份:)