我遇到了一点麻烦。我写了一些代码和测试。我不得不检查操作日期到一些对象,然后我创建了一些这样的测试数据:
task.setPlannedTime(
DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss")
.parseDateTime("4/27/2018 08:00:00")
.toDate());
我还有更多这样的任务。这些是存根数据,当调用某个方法时会返回这些数据,没关系,这个点就在某处。
经过测试的代码是对这些任务列表的一些排序。然后我检查我正确排序这些数据的测试。我使用与以前相同的语句来创建要比较的日期。 (我使用TestNG)。测试方法如下所示:
testSmth() {
setupMockData(getStubbedTaskList()); // get stubbed data and then just some mocking
handler.doSomething();
List<Task> tasks = getCapturedTasks();
//and here I want to check if the first element has correct date
assertEquals(
tasks.get(0).getPlanendDate(),
DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss")
.parseDateTime("4/27/2018 08:00:00")
.toDate()
);
}
getStubbedData
是一个返回存根任务列表的方法 不同的日期,如第一个代码清单。
关键是它有效。我使用maven和IDEA测试运行器在本地运行测试。一切都好。但是一旦它出现在CI / CD上(我们使用Jenkins),我的构建失败了。
原因很奇怪。当我在CI / CD上创建测试数据(如int)时,日期总是Fri Apr 27 01:00:00
。但是,在断言语句中,日期已正确创建Fri Apr 27 08:00:00
。我收到了一个断言错误,因为预期日期是Fri Apr 27 08:00:00
,但实际值是Fri Apr 27 01:00:00
。
我的意思是,断言和存根的两个日期在同一测试方法的同一个类中以相同的方式创建。但是对于存根数据,所有日期都在解析为奇怪的东西。这怎么可能?它看起来不像时区或类似的典型问题。
感谢每一个声音。对任何想法都会非常感激。 感谢。
P.S .:
之所以我认为因为时区而不是每个日期始终相同:Fri Apr 27 01:00:00
当我为08:00:00
创建时,我创建13:00:00
时也是如此上。
P.S.S:Java 7 ......