Я получаю исключение LazyInitializationException, чтобы проверить мои методы DAO, используя стек инструмента, определенный в заголовке. Я понимаю, что мой тест должен выполняться вне сеанса спящего режима, или он был закрыт, прежде чем я попытаюсь прочитать дочерние объекты из моего DAO. Из чтения документации я понял, что использование тега @TransactionConfiguration позволит мне определить менеджера транзакций, в котором будут выполняться тесты.junit 4 тестирование с весной 3.0 и Hibernate 3 в Eclipse - LazyInitializationException
Я читал документацию несколько раз и добавлял миллионы сообщений на форуме. Все еще хлопая головой в мою клавиатуру ... Что мне не хватает? Спасибо за вашу помощь!
мой блок тестовый класс:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:/WEB-INF/applicationContext-db.xml",
"classpath:/WEB-INF/applicationContext-hibernate.xml",
"classpath:/WEB-INF/applicationContext.xml" })
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, CleanInsertTestExecutionListener.class})
@DataSetLocation("test/java/com/yada/yada/dao/dbunit-general.xml")
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback = true)
@Transactional
public class RealmDAOJU4Test {
@Autowired
private DbUnitInitializer dbUnitInitializer;
@Autowired
private RealmDAO realmDAO;
@Test
public void testGetById() {
Integer id = 2204;
Realm realm = realmDAO.get(id);
assertEquals(realm.getName().compareToIgnoreCase(
"South Technical Realm"), 0);
assertEquals(8, realm.getRealmRelationships().size());
}
}
мой ApplicationContext-hibernate.xml:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="useTransactionAwareDataSource" value="true" />
... other properties removed ...
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
мое определение дао в applicationContext.xml
<bean id="realmDAOTarget" class="com.yada.yada.dao.hibernate.RealmDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="realmDAO" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.yada.yada.dao.RealmDAO</value>
</property>
<property name="interceptorNames">
<list>
<value>hibernateInterceptor</value>
<value>realmDAOTarget</value>
</list>
</property>
</bean>
Спасибо, только что пошел по поиску в SessionFactories и нашел тему. –
Это сработало красиво, только взял меня на вечер, чтобы добраться до этого поста, спасибо! – credmp