У меня модульный тест на Java, который записывает постоянную временную метку в строку в моей локальной тестовой базе данных, читает ее и сравнивает ее с тем, что я ожидал. Это отлично работает на моем локальном ноутбуке, который находится под часовой пояс GMT.Обработка локальных и удаленных баз данных TimeZone Различия в тестах
Когда я передаю код нашему серверу непрерывной интеграции, тест терпит неудачу с разным временем -5 часов. Это не удивительно, так как наш сервер интеграции размещен на AWS на восточном побережье США. Тем не менее, это вызывает проблему ...
Не меняя локальный сервер MySQL на тот же часовой пояс, что и удаленный сервер (и все разработчики в моей команде тоже так делают), может ли кто-нибудь показать мне, как исправить эту проблему в коде, не получив слишком хаки?
//Fetch actual table contents
IDataSet databaseDataSet = databaseTester.getConnection().createDataSet();
ITable actualTable = databaseDataSet.getTable("batch");
// Load expected data from an XML dataset
IDataSet expectedDataSet = new XmlDataSet(getClass().getResourceAsStream("/dbunit/expected_insert_batch.xml"));
ITable expectedTable = expectedDataSet.getTable("batch");
// Assert actual database table match expected table
Assertion.assertEquals(expectedTable, actualTable);
Спасибо,
Вы должны указать, как вы сравниваете временные метки, как целые числа? как строки? – Guillaume
Да, показать подробную информацию об аппаратном тестировании, пожалуйста :) –
Сравнение меток времени выполняется DBUnit – Scruffers