Hamcrest测试奇怪的时移失败

问题描述 投票:0回答:1

我正在尝试构建https://github.com/jenkinsci/jira-trigger-plugin,并且在与时间/日期有关的测试中失败:

expect commentEvent.issue.creationDate, is(new DateTime(1980, 1, 1, 0, 0, 0, 0))

失败:

Condition not satisfied:

expect commentEvent.issue.creationDate, is(new DateTime(1980, 1, 1, 0, 0, 0, 0))
|      |            |     |                |
false  |            |     |                1980-01-01T00:00:00.000+03:00
       |            |     1980-01-01T03:00:00.000+03:00
<...>
Expected: is <1980-01-01T00:00:00.000+03:00>
 but: was <1980-01-01T03:00:00.000+03:00>

可以看出,失败是由于时移引起的,它等于时区偏移量。

但是根据时间戳记,时区已考虑在内。

我已经使用JodaTime的.minusHours()进行了快速修复,但这不是永久修复的选项。

java datetime testing jodatime hamcrest
1个回答
0
投票

免责声明:我与jira触发插件无关,所以我只能推测:

如果测试未在您的时区中运行,则可能不是为了进行测试而设计的(对于任何原因,包括测试设计中的错误)。

如果是这样,作为解决方法,您可以考虑在GMT时区(偏移量为零)中运行测试过程。

您可以使用以下方法对任何Java进程执行此操作:

java -Duser.timezone=GMT <MainClass>

我不知道该插件的构建方式,但是我敢肯定,有一个选项可以为maven / surefire和gradle添加这样的属性

© www.soinside.com 2019 - 2024. All rights reserved.