Java 由于datetime格式,所有Junit测试用例都失败

Java 由于datetime格式,所有Junit测试用例都失败,java,junit,Java,Junit,在我的机器中,只有当日期格式是除2013-12-21之外的任何东西时,所有Junit测试用例才会失败。 例如,如果日期是2007-03-30+01:00,那么它会给我这个,预期:但是是: 但在不同的机器上运行良好,任何人都可以帮助我吗,我的操作系统是Linux 输入日期:2007-03-30+01:00 验证日期:2007-03-30 00:00:00.0 消息:预期:但是是:您注意到共享了您的代码,但问题似乎是您可能在代码中使用了java.util.Calendar,这是一个依赖于时区的api

在我的机器中,只有当日期格式是除2013-12-21之外的任何东西时,所有Junit测试用例才会失败。 例如,如果日期是2007-03-30+01:00,那么它会给我这个,预期:但是是:

但在不同的机器上运行良好,任何人都可以帮助我吗,我的操作系统是Linux

输入日期:2007-03-30+01:00

验证日期:2007-03-30 00:00:00.0


消息:预期:但是是:

您注意到共享了您的代码,但问题似乎是您可能在代码中使用了
java.util.Calendar
,这是一个依赖于时区的api,可能会在不同时区运行的不同机器上生成不同的结果。如果你有选择的改变,那么你应该考虑使用<代码> java .UTI.DATE < /C>,因为它是时区独立的

< P>听起来好像你在比较地方代码中的<代码> toStReg()/>代码> 尝试比较原始日期:

assertEquals(expectedDate, myDate);
或者可能是大纪元时间:

assertEquals(expectedDate.getTime(), myDate.getTime());

问题是时区。您的时间似乎是utc(通常在linux上)。对于测试,您可以使用定义的时区(在java api中不是那么简单)创建时间戳,或者使用date.getMillis()来比较两个日期对象我的本地机器timzone是BST。如何在代码中创建日期?在集成测试的xml文件中,您将xml字符串与yor java Date的字符串表示形式进行比较?谢谢您的回答,但我无法对现有测试用例进行任何更改,而且相同的测试用例在不同的机器上运行良好。因此,在运行测试时,请尝试设置适当的时区(-Duser.timezone)@subodh—在某些机器上工作而在其他机器上不工作的测试用例被破坏。不管你喜欢与否,这是测试中的一个bug。为什么不允许您修复bug?这不是你的工作吗?@DavidWallace,目前我无法解决这个问题,我只能提出一个问题。但问题是,这些测试用例只有在我的机器上失败。这对我来说很奇怪。正如其他人指出的,几乎可以肯定是因为你的时区设置。但是,依赖时区设置作为特定方式的测试是有缺陷的测试,应该加以修复。