Spring/Hibernate/Junit 针对 HSQLDB 测试 DAO 的示例
我正在努力尝试实现JUnit测试以检查DAO的功能。(DAO 将创建/读取基本对象/表关系)。
我遇到的麻烦是DAO的持久性(对于非测试代码)是通过使用Spring/Hibernate的内部解决方案完成的,它消除了我发现的大多数示例都包含的常用模板。*.hbm.xml
因此,我在理解如何设置JUnit测试以实现DAO以创建/读取内存中的HSQLDB(只是非常基本的功能)时遇到了一些麻烦。我已经找到了一些示例,但是内部持久性的使用意味着我无法扩展示例显示的一些类(我似乎无法获得应用程序上下文.xml正确设置)。
任何人都可以建议任何项目/示例,我可以看一下(或任何文档)来进一步了解实现此测试功能的最佳方法?我觉得这应该非常简单,但是我在实现我发现的示例时不断遇到问题。
编辑:
这是我的解决方案,对于任何需要帮助的人来说,可以提高可读性:
-
我:
TestClass
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContextTest-Example.xml") @Transactional public class ExampleDaoTest extends AbstractTransactionalJUnit4SpringContextTests { @Resource(name = "sessionFactory") private SessionFactory exampleSessionFactory; @Resource(name = "exampleDao") private ExampleDao exampleDao;
-
我的文件:
applicationContext.xml
<!-- List of Daos to be tested --> <bean id="exampleDao" class="org.myExample.ExampleDao"/> <!-- Datasource --> <bean id="example_dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> <property name="url" value="jdbc:hsqldb:mem:ExampleTest"/> <property name="username" value="sa"/> <property name="password" value=""/> </bean> <!-- Session Factory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="example_dataSource"/> <property name="annotatedClasses"> <list> <value>org.myExample.ExampleClass</value> </list> </property> <property name="hibernateProperties"> .... left to user to choose properties </property> </bean>