Как проверить Дао с помощью Dbunit для таблицы, в которой нет спящего объекта
Я написал тестовый класс для Дао, используя DbUnit и набор данных
Вот мой класс:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:config/appContext-test.xml" })
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DBUnitTestExecutionListener.class })
@DBUnitConfiguration(locations = { "testdata/mso_data.xml" })
public class TestMsoJobsDao{
@Resource
private MsoJobsDao msoJobsDao;
@Test
public void testSaveMsoDataIntoTempTable() throws Exception{
List<Object[]> msoHeadendList = new ArrayList<Object[]>();
Timestamp timestamp1 = Timestamp.valueOf("2015-07-01 08:49:50");
Object[] obj1 = {"TEST_MSO_SERVICE_ID_3","America/Detroit","SL","1",timestamp1,"1",timestamp1};
msoList.add(obj1);
msoJobsDao.saveMsoDataIntoTempTable(msoList);
}
}
и набор данных:
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<mso_temp id="1" mso_service_id="TEST_MSO_SERVICE_ID_3"
timezone="America/Detroit" customer_group="RC" created_by="1"
created_date="2015-10-05 06:31:59" updated_by="1"
updated_date="2015-10-05 06:31:59"/>
</dataset>
Когда я запускаю свой тестовый пример, я получаю org.dbunit.dataset.NoSuchTableException: mso_temp
Моя проблема в том, что мне не нужны никакие сущности, так как я подключаюсь к другой базе данных и сохраняю данные оттуда во временную таблицу в нашей базе данных приложения, используя PreparedStatement. Если я создаю класс сущностей, тестовый пример работает нормально.
Есть ли способ, с помощью которого DBUnit будет рассматривать таблицу, для которой нет класса сущности.
1 ответ
dbUnit не использует классы сущностей, он напрямую использует JDBC. Ошибка dbUnit: таблица не существует, а dbUnit не создает таблицы. Ваше приложение / тестовая установка создает таблицы из классов сущностей, поэтому без сущности таблица не существует.
Для необходимых таблиц без сущностей, тестовая установка должна создать эти таблицы. Для простоты вы можете просто поместить объект в папку с тестовыми классами. Другой вариант - запустить DDL, который создает таблицы, перед запуском всех тестов.