Как протестировать Dao с помощью Dbunit для таблицы, в которой нет объекта гибернации

Я написал тестовый класс для Dao, используя 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 будет рассматривать таблицу, для которой класса сущностей нет.


person Pracheer Pancholi    schedule 08.06.2016    source источник


Ответы (1)


dbUnit не использует классы сущностей, он напрямую использует JDBC. Ошибка dbUnit заключается в том, что таблица не существует, и dbUnit не создает таблицы. Ваше приложение/тестовая установка создает таблицы из классов сущностей, поэтому без сущности таблица не существует.

Для необходимых таблиц без сущностей установка теста должна создать эти таблицы. Для простоты вы можете просто поместить объект в папку тестовых классов. Другой вариант — запустить DDL, создающий таблицы перед выполнением всех тестов.

person Jeff    schedule 09.06.2016
comment
Джефф спасибо за ответ, так что это означает, что если я создам класс сущностей в тестовой папке, это не вызовет никаких проблем. - person Pracheer Pancholi; 09.06.2016