J'ai un test unitaire en Java qui écrit un horodatage constant dans une ligne dans ma base de données de test locale, le lit et le compare à ce que j'attendais. Cela fonctionne très bien sur mon ordinateur portable local qui est sous le fuseau horaire GMT.Gestion des différences de la base de données locale et distante dans les tests
Lorsque j'engage le code sur notre serveur d'intégration continue, le test échoue avec un temps différent de -5 heures. Ce n'est pas une surprise puisque notre serveur d'intégration est hébergé sur AWS sur la côte Est des États-Unis. Cependant, cela cause un problème ...
À moins de changer mon serveur MySQL local pour avoir le même fuseau horaire que le serveur distant (et avoir tous les développeurs de mon équipe aussi), quelqu'un peut-il me montrer comment résoudre ce problème dans le code sans devenir trop hacky?
//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);
Merci,
Vous devez détailler comment vous comparez les horodatages, en tant qu'entier? en tant que chaînes? – Guillaume
Oui, affichez les détails du test unitaire s'il vous plaît :) –
La comparaison d'horodatage est effectuée par DBUnit – Scruffers