Closed
Description
nicolas de loof opened SPR-3096 and commented
I'm using this abstract base test class to test my Hibernate mappings and DAOs. It uses AbstractTransactionalDataSourceSpringContextTests
to load the Hibernate SessionFactory
and adds DbUnit integration to set up the database in an expected state before the test starts.
As I've found it really useful I'd like to contribute it.
public abstract class AbstractHibernateMappingsTests
extends AbstractTransactionalDataSourceSpringContextTests {
private HibernateTemplate hibernateTemplate;
private String schema;
protected final void onSetUpInTransaction() throws Exception {
String resource = getDataSetResource();
if ( resource != null ) {
logger.info( "Loading DBUnit file " + resource );
IDatabaseConnection connection = getDatabaseConnection();
InputStream stream = getClass().getResourceAsStream( resource );
IDataSet dataSet = new FlatXmlDataSet( stream );
ReplacementDataSet replacementDataSet = new ReplacementDataSet( dataSet );
replacementDataSet.addReplacementObject( "[NULL]", null );
DatabaseOperation.REFRESH.execute( connection, replacementDataSet );
}
}
protected IDatabaseConnection getDatabaseConnection() throws SQLException {
Connection cnx = hibernateTemplate.getSessionFactory().getCurrentSession().connection();
IDatabaseConnection connection = new DatabaseConnection( cnx, schema );
return connection;
}
/**
* @return a resource name for a DBUnit flatDataset file (or null)
*/
protected abstract String getDataSetResource();
public void setHibernateTemplate( HibernateTemplate hibernateTemplate ) {
this.hibernateTemplate = hibernateTemplate;
}
public void setSchema( String schema ) {
this.schema = schema;
}
/**
* @return the hibernateTemplate
*/
protected HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
}
Affects: 2.0.2
Issue Links:
- Introduce a TestExecutionListener for DbUnit [SPR-6593] #11259 Introduce a TestExecutionListener for DbUnit ("is superseded by")