DAOの機能をチェックするためにJUnitテストを実装しようとしています。(DAO は、基本的なオブジェクト/テーブルの関係を作成/読み取ります)。
私が抱えている問題は、 Spring/Hibernateを使用した社内ソリューションによって DAO (非テスト コード用) の永続化が完了していることです。これにより、私が見つけたほとんどの例に含まれる通常の*.hbm.xml
テンプレートが排除されます。
このため、 JUnitテストをセットアップして DAO を実装し、インメモリHSQLDBを作成/読み取り (非常に基本的な機能)する方法を理解するのに苦労しています。いくつかの例を見つけましたが、社内永続化の使用は、例が示すクラスの一部を拡張できないことを意味します (application-context.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>