DBUnit数据集中与当前相关的日期

我想知道是否有任何方法可以在DBUnit XML数据集中明确指定日期作为日期。 有时代码逻辑在将来的日期和过去的日期是不同的,我想测试这两种情况。 当然,我可以指定类似于2239年11月5日的东西,并确保测试在这个日期之前有效但是有更优雅的方式。

我在Java开发期间还没有遇到过这样的情况,但是一旦我遇到日期前一天,日期前两天和日期前两天以上的代码逻辑不同的经历。 在这种情况下,编写数据库驱动测试的唯一可能解决方案是在数据导入期间插入相对日期。

DBUnit是否为此提供了任何设施?

我刚开始使用DBUnit并且正在寻找类似的function。 不幸的是,框架中的日期似乎没有表达式语言。 但是,我确实找到了使用DBUnit的ReplacementDataSet类的合适解决方法。 此类采用IDataSet对象并公开方法以将IDataSet对象提取的对象替换为数据集文件。

数据集

   

源代码

 String dataSetFile = "testDataFile.xml"; IDataSet dataSet = new FlatXmlDataSetBuilder().build(new FileInputStream(dataSetFile)); ReplacementDataSet rDataSet = new ReplacementDataSet(dataSet); Set keys = dataSetAdjustments.keySet(); rDataSet.addReplacementObject("[create_date]", DateUtils.addDays(new Date(), -2)); 

现在,当测试运行时,用户的创建数据将始终设置为测试运行前两天。

希望这可以帮助。 祝你好运。

您可以使用Calendar的add()来定义将来的日期,并使用它与JUnit的数据源关系。 我怀疑这适用于DBUnit的XML格式。 可能是您创建自己的TestCase,它从DBTestCase扩展并实现getDataSet()方法。