Я задаюсь вопросом, существует ли какой-либо способ указать, например, завтра как дата в наборе данных DBUnit XML. Иногда логика кода отличается для дат в будущем и дат в прошлом, и я хочу протестировать оба случая. Наверняка я могу указать что-то как 5-го ноября 2239 и быть уверен, что тест будет работать до этой даты, но является там более изящным путем.
Я еще не столкнулся с такой ситуацией во время своей разработки Java, но после того как у меня был опыт, когда логика кода отличалась в течение одного дня перед датами, за два дня до дат и больше чем за два дня до дат. В этом случае единственное возможное решение записать базе данных управляемый тест состоит в том, чтобы вставить относительные даты во время импорта данных.
Там какие-либо средства предоставляются DBUnit для этого?
Я только начал использовать DBUnit и искал аналогичные возможности. К сожалению, в структуре нет языка выражений для дат. Однако я нашел подходящее решение, используя класс DBUnit ReplacementDataSet. Этот класс принимает объект IDataSet и предоставляет методы для замены объектов, извлеченных объектом IDataSet из файлов набора данных.
набор данных
<dataset>
<user first_name="Dan"
last_name="Smith"
create_date="[create_date]"/>
<dataset>
исходный код
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));
Теперь, когда запускается тест, для данных создания пользователя всегда будет установлено значение за два дня до запуска теста.
Надеюсь, это поможет. Удачи.
Вы можете использовать add () календаря для определения дат в будущем и использования этого в связи с источником данных для JUnit. Я сомневаюсь, что это будет работать с форматом XML DBUnit. Возможно, вы создадите свой собственный TestCase, который расширяется от DBTestCase и реализует метод getDataSet ().