如何使用 Dbunit 为没有休眠实体的 table 测试 Dao
How to test Dao with Dbunit for table which is not having hibernate entity
我使用 DbUnit 和数据集
为 Dao 写了一个测试 class
这是我的class:
@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
我的问题是我不需要任何实体,因为我正在连接到其他数据库并将数据从那里保存到我们的应用程序数据库中的临时 table 使用 PreparedStatement.If 我创建实体 class 测试用例运行良好。
DBUnit 是否可以通过任何方式考虑实体 class 不存在的 table。
dbUnit不使用实体类,直接使用JDBC。 dbUnit错误是table不存在,dbUnit不创建tables。您的应用程序/测试设置从实体 类 创建 table,因此没有实体,table 不存在。
对于没有实体的所需 table,测试设置必须创建这些 table。为方便起见,您可能只想将实体放在测试 类 文件夹中。另一种选择是 运行 DDL,它在 运行 所有测试之前创建 table(s)。
我使用 DbUnit 和数据集
为 Dao 写了一个测试 class这是我的class:
@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
我的问题是我不需要任何实体,因为我正在连接到其他数据库并将数据从那里保存到我们的应用程序数据库中的临时 table 使用 PreparedStatement.If 我创建实体 class 测试用例运行良好。
DBUnit 是否可以通过任何方式考虑实体 class 不存在的 table。
dbUnit不使用实体类,直接使用JDBC。 dbUnit错误是table不存在,dbUnit不创建tables。您的应用程序/测试设置从实体 类 创建 table,因此没有实体,table 不存在。
对于没有实体的所需 table,测试设置必须创建这些 table。为方便起见,您可能只想将实体放在测试 类 文件夹中。另一种选择是 运行 DDL,它在 运行 所有测试之前创建 table(s)。