【发布时间】:2013-06-27 02:12:39
【问题描述】:
我正在使用 HSQLDB 进行单元测试,我有一堆测试类,它们都扩展了一个抽象类 MyAbstractTestBase。
class abstract MyAbstractTestBase
{
static
{
setUpDBTables();
}
public static void setUpDBTables()
{
context = new ClassPathXmlApplicationContext(new String[]{
"file:spring-configuration/unit-testing-config.xml"
});
//InputStream inputStream = getClass().getClassLoader().getResourceAsStream("db/MY_TABLE.sql");
DataSource dataSource = (DataSource)context.getBean("MyDataSource");
namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
}
这种方法的主要问题是spring创建的entityManager,
@PersistenceContext(unitName = MyConstants.ENTITY_MANAGER_FACTORY_UNIT_NAME)
protected EntityManager entityManager;
不会持久化数据,也不会抛出异常,但如果我尝试使用“select”读取一些数据,它就可以工作。
这是我的问题,如何在开始单元测试之前创建表?这样我的 entityManager 将按预期工作。
另外,为什么我的 entityManager 没有抛出任何异常,却没有保留任何记录。
【问题讨论】:
-
我很困惑 - 如果您需要创建表以使您的代码能够运行,那么您的 SELECT 语句是如何工作的?
-
1.我能够创建表格。 2. 我可以使用在抽象类中初始化的 NamedParameterJdbcTemplate 插入数据。 3. 我无法使用 entitymanager 插入/保留数据。 4.我可以通过手动设置断点和插入记录或使用NamedParameterJdbcTemplate来测试使用entityManager的“选择”
标签: spring unit-testing testing junit hsqldb