相对于DBUnit数据集中当前的日期

Ves*_*niK 14 java dbunit unit-testing

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

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

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

loy*_*own 25

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

数据集

<dataset>
    <user first_name="Dan"
          last_name="Smith"
          create_date="[create_date]"/>
<dataset>
Run Code Online (Sandbox Code Playgroud)

源代码

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

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

希望这可以帮助.祝好运.