Mes tests d'intégration DAO échouent car les entités créées pendant les tests sont toujours dans la base de données au début du test suivant. Le même comportement est vu à la fois de MySQL 5 et H2.Le test d'intégration DAO Spring/JTA/JPA ne redémarre pas?
Les classes de test sont annotés avec:
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "/testPersist-applicationContext.xml" })
La configuration de la fève de transaction dans le cadre de l'application de test est la suivante:
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="atomikosTransactionManager" />
<property name="userTransaction" ref="atomikosUserTransaction" />
</bean>
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<property name="forceShutdown" value="false" />
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300" />
</bean>
Le gestionnaire d'entités est configuré comme suit:
<bean id="myappTestLocalEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="myapp" />
<property name="persistenceUnitPostProcessors">
<bean class="com.myapp.core.persist.util.JtaPersistenceUnitPostProcessor">
<property name="jtaDataSource" ref="myappPersistTestJdbcDataSource" />
</bean>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="false" />
<property name="database" value="$DS{hibernate.database}" />
<property name="databasePlatform" value="$DS{hibernate.dialect}" />
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
</prop>
<prop key="hibernate.format_sql">true"</prop>
<prop key="hibernate.use_sql_comments">true</prop>
</props>
</property>
</bean>
<context:annotation-config />
Tout dans les fichiers journaux semble être bien ... Je peux voir les messages de Spring à propos de rollback et d'Atomikos à propos de rollback aussi. Mais franchement, les journaux sont si énormes et si complexes, je pourrais facilement manquer quelque chose ...
Pourtant, les données de test insérées restent! Des indices?
Merci beaucoup, eu un problème similaire (sans le printemps) et ça m'a aidé – Ittai