JodaTime :: toDate возвращает разные даты - PullRequest
0 голосов
/ 28 апреля 2018

Я столкнулся с небольшой проблемой. Я написал некоторый код и тесты. Мне пришлось проверить работу с датами в некоторых объектах, затем я создал несколько тестовых данных, таких как:

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 runner. Все отлично. Но как только он появляется на CI / CD (мы используем Jenkins), я получил неудачную сборку.

Причина странная. Когда я создаю тестовые данные, такие как int, в первом листинге кода на CI / CD, дата всегда 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 ...

...