【发布时间】:2010-12-14 11:50:13
【问题描述】:
我在 Java 中进行了单元测试,它将一个常量时间戳写入本地测试数据库中的一行,将其读回并将其与我的预期进行比较。这在我位于 GMT 时区的本地笔记本电脑上运行良好。
当我将代码提交到我们的持续集成服务器时,测试失败,时间差为 -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);
谢谢,
【问题讨论】:
-
您应该详细说明如何将时间戳作为整数进行比较?作为字符串?
-
是的,请显示单元测试的详细信息:)
-
DBUnit 正在进行时间戳比较
标签: java mysql timezone dbunit