2009-07-22 3 views
0

J'utilise DBUnit pour tester une persistance Spring/Hibernate.DBUnit: comment actualiser uniquement en cas d'échec?

J'ai créé un test abstrait:

public abstract class AbstractTestCase extends 
    AbstractTransactionalDataSourceSpringContextTests { 

    @Override 
    protected String[] getConfigLocations() { 
     return new String[] { 
       "classpath:/applicationContext.xml", 
       "classpath:/testDataSource.xml" }; 
    } 
    @Override 
    protected void onSetUpInTransaction() throws Exception { 
     DataSource dataSource = jdbcTemplate.getDataSource(); 
     Connection con = DataSourceUtils.getConnection(dataSource); 

     boolean validateSchemaExists = true; 
     IDatabaseConnection dbUnitCon = new DatabaseConnection(con, 
       "MHADB_TEST", validateSchemaExists); 

     DatabaseConfig dbUnitConConfig = dbUnitCon.getConfig(); 
     dbUnitConConfig.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, 
       new OracleDataTypeFactory()); 

     boolean enableColumnSensing = true; 
     boolean enableDTDMetadata = false; 
     IDataSet dataSet = new FlatXmlDataSet(new File(
       "./src/test/resources/mhadb-dataset.xml"), 
       enableDTDMetadata, 
       enableColumnSensing); 
     try { 
      DatabaseOperation.CLEAN_INSERT.execute(dbUnitCon, dataSet); 
     } finally { 
      DataSourceUtils.releaseConnection(con, dataSource); 
     } 
    } 
} 

Mais chaque fois que je lance un test, il rafraîchir la DB agains le DataSet avant chaque méthode d'essai, ce qui est tout à fait très long et très pas bien je pense.

Comment recharger/rafraîchir uniquement en cas d'échec?

P.S .: Combien coûte le code?

Répondre

0

J'ai trouvé un moyen d'accélérer les essais, même pensé que le comportement est toujours pas comme prévu (rafraîchissement sur FAIL):

dbUnitConConfig.setFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS, 
      true); 
Questions connexes