我正在尝试构建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()进行了快速修复,但这不是永久修复的选项。
免责声明:我与jira触发插件无关,所以我只能推测:
如果测试未在您的时区中运行,则可能不是为了进行测试而设计的(对于任何原因,包括测试设计中的错误)。
如果是这样,作为解决方法,您可以考虑在GMT时区(偏移量为零)中运行测试过程。
您可以使用以下方法对任何Java进程执行此操作:
java -Duser.timezone=GMT <MainClass>
我不知道该插件的构建方式,但是我敢肯定,有一个选项可以为maven / surefire和gradle添加这样的属性