Tests junit, injection de données de tests et création de base
Bonjour, je suis nouveau dans le developpement java, je suis en train de mettre en place des tests unitaires sur mes classes vo de java :
j'utilise dans un applicationcontext.xml les beans suivants :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <bean id="monDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.h2.Driver" />
<property name="url" value="jdbc:h2:file:c:/dev/work/db;AUTO_SERVER=TRUE" />
<property name="username" value="monuser" />
<property name="password" value="monmdp" />
</bean>
<bean id="maSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="monDataSource" />
<property name="packagesToScan" value="fr.blabla.blabla2.*.domaine"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.validator.apply_to_ddl">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
</props>
</property>
</bean> |
a noter la propriété
Code:
<prop key="hibernate.hbm2ddl.auto">create</prop>
afin que la base soit recréée systématiquement a cause de modification récurrente de la base, même de modification sur des nom de tables ou champ existant.
Pour mes tests, j'utilise une base de test xml injecté, grace a des opérations de setup
Code:
testDatabaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT);
qui fonctionne bien.
Sur mes tests eux même, je passe par un XmlBeanFactory
Code:
protected XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
qui fonctionne bien aussi.
Le problème, c'est que j'ai l'impression que le test m'injecte bien le jeu de test, mais qu'il passe ensuite le create de ma propriété hibernate, si bien que la base est recréée après l'injection du jeu de test.
Pour preuve, si je sais que ma base est ok, et que je met un
Code:
<prop key="hibernate.hbm2ddl.auto">update</prop>
, mes tests unitaires sont impeccables.
Est ce qu'il existe une solution pour que hibernate me recrée ma base, puis que mon jeu de tests soient injecté par la suite ?