From: <fg...@us...> - 2008-01-20 20:47:22
|
Revision: 541 http://openutils.svn.sourceforge.net/openutils/?rev=541&view=rev Author: fgiust Date: 2008-01-20 12:47:20 -0800 (Sun, 20 Jan 2008) Log Message: ----------- standard dbunit operations can now be used Modified Paths: -------------- trunk/openutils-testing/src/main/java/it/openutils/testing/DbUnitTestContext.java trunk/openutils-testing/src/site/apt/index.apt trunk/openutils-testing-testng/derby.log trunk/openutils-testing-testng/src/test/java/it/openutils/testing/testng/SingleDatasourceDbUnitTest.java Modified: trunk/openutils-testing/src/main/java/it/openutils/testing/DbUnitTestContext.java =================================================================== --- trunk/openutils-testing/src/main/java/it/openutils/testing/DbUnitTestContext.java 2008-01-20 19:29:56 UTC (rev 540) +++ trunk/openutils-testing/src/main/java/it/openutils/testing/DbUnitTestContext.java 2008-01-20 20:47:20 UTC (rev 541) @@ -35,6 +35,12 @@ import org.dbunit.dataset.filter.ITableFilter; import org.dbunit.dataset.filter.SequenceTableFilter; import org.dbunit.operation.DatabaseOperation; +import org.dbunit.operation.DeleteAllOperation; +import org.dbunit.operation.DeleteOperation; +import org.dbunit.operation.InsertOperation; +import org.dbunit.operation.RefreshOperation; +import org.dbunit.operation.TruncateTableOperation; +import org.dbunit.operation.UpdateOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; @@ -48,12 +54,24 @@ { /** + * Truncate dataset cache. This is kept as a static attribute since the creation of the dataset is very expensive + * and it doesn't change across tests. + */ + protected static Map<String, IDataSet> truncateDataSetCache = new HashMap<String, IDataSet>(); + + /** * Logger. */ private static Logger log = LoggerFactory.getLogger(DbUnitTestContext.class); + /** + * The test instance. + */ private Object testcase; + /** + * Spring application context. + */ private ApplicationContext applicationContext; /** @@ -62,11 +80,10 @@ private Map<String, IDataSet> datasetCache = new HashMap<String, IDataSet>(); /** - * Truncate dataset cache. This is kept as a static attribute since the creation of the dataset is very expensive - * and it doesn't change across tests. + * Instantiates a new DbUnitTestContext + * @param testcase test instance + * @param applicationContext Spring application context */ - protected static Map<String, IDataSet> truncateDataSetCache = new HashMap<String, IDataSet>(); - public DbUnitTestContext(Object testcase, ApplicationContext applicationContext) { this.testcase = testcase; @@ -113,12 +130,11 @@ if (dbUnitExecution.truncateAll()) { - truncateAll(connection, tableFilter, dataSourceName, dbUnitExecution - .truncateOperation() - .newInstance()); + truncateAll(connection, tableFilter, dataSourceName, getDatabaseOperation(dbUnitExecution + .truncateOperation())); } - DatabaseOperation dbOperation = dbUnitExecution.insertOperation().newInstance(); + DatabaseOperation dbOperation = getDatabaseOperation(dbUnitExecution.insertOperation()); for (String datasetFile : datasets) { importDataSet(createDataset(datasetFile), connection, tableFilter, dataSourceName, dbOperation); @@ -132,8 +148,54 @@ } /** - * @param datasetFile - * @return + * Instantiates the givec Database Operation. Standard operations in the <code>org.dbunit.operation</code> package + * have protected constructors and needs to be accessed using the public static fields in + * <code>org.dbunit.operation.DatabaseOperation</code>. + * @param dboperationClass db operation class + * @return db operation instance + * @throws InstantiationException if the given db operation class cannot be instantiated + * @throws IllegalAccessException if the given db operation class cannot be instantiated + */ + private DatabaseOperation getDatabaseOperation(Class< ? extends DatabaseOperation> dboperationClass) + throws InstantiationException, IllegalAccessException + { + if (UpdateOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.UPDATE; + } + else if (InsertOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.INSERT; + } + else if (RefreshOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.REFRESH; + } + else if (DeleteOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.DELETE; + } + else if (DeleteAllOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.DELETE_ALL; + } + else if (TruncateTableOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.TRUNCATE_TABLE; + } + else if (DeleteOperation.class.equals(dboperationClass)) + { + return DatabaseOperation.UPDATE; + } + + return dboperationClass.newInstance(); + + } + + /** + * Creates a dataset instance by fetching a file from the classpath + * @param datasetFile name of the file, will be loaded from the classpath + * @return IDataSet instance * @throws IOException * @throws DataSetException */ @@ -227,6 +289,11 @@ return truncateDataSetCache.put(datasourceName + "_" + StringUtils.defaultString(schema), dataset); } + /** + * Loads a named datasource from the spring context. + * @param name datasource name. + * @return Datasource instance + */ @SuppressWarnings("unchecked") protected DataSource getDatasource(String name) { Modified: trunk/openutils-testing/src/site/apt/index.apt =================================================================== --- trunk/openutils-testing/src/site/apt/index.apt 2008-01-20 19:29:56 UTC (rev 540) +++ trunk/openutils-testing/src/site/apt/index.apt 2008-01-20 20:47:20 UTC (rev 541) @@ -6,3 +6,10 @@ openutils-testing + + + +Released versions + + Check it at {{{http://www.mvnrepository.com/artifact/net.sourceforge.openutils/openutils-testing}http://www.mvnrepository.com/artifact/net.sourceforge.openutils/openutils-testing}} + Modified: trunk/openutils-testing-testng/derby.log =================================================================== --- trunk/openutils-testing-testng/derby.log 2008-01-20 19:29:56 UTC (rev 540) +++ trunk/openutils-testing-testng/derby.log 2008-01-20 20:47:20 UTC (rev 541) @@ -1,12 +1,6 @@ ---------------------------------------------------------------- -2008-01-09 22:30:08.630 GMT: - Booting Derby version The Apache Software Foundation - Apache Derby - 10.2.2.0 - (485682): instance c013800d-0117-60ac-bb18-00000229e5c0 +2008-01-20 20:42:12.281 GMT: + Booting Derby version The Apache Software Foundation - Apache Derby - 10.2.2.0 - (485682): instance c013800d-0117-98ef-dce7-000001d801b8 on database directory /data/apps/openmind/openutils-trunk/openutils-testing-testng/target/test-db1 Database Class Loader started - derby.database.classpath='' ----------------------------------------------------------------- -2008-01-09 22:30:09.498 GMT: - Booting Derby version The Apache Software Foundation - Apache Derby - 10.2.2.0 - (485682): instance f81e0010-0117-60ac-bb18-00000229e5c0 -on database directory /data/apps/openmind/openutils-trunk/openutils-testing-testng/target/test-db2 - -Database Class Loader started - derby.database.classpath='' Modified: trunk/openutils-testing-testng/src/test/java/it/openutils/testing/testng/SingleDatasourceDbUnitTest.java =================================================================== --- trunk/openutils-testing-testng/src/test/java/it/openutils/testing/testng/SingleDatasourceDbUnitTest.java 2008-01-20 19:29:56 UTC (rev 540) +++ trunk/openutils-testing-testng/src/test/java/it/openutils/testing/testng/SingleDatasourceDbUnitTest.java 2008-01-20 20:47:20 UTC (rev 541) @@ -17,6 +17,7 @@ import it.openutils.testing.DbUnitExecution; +import org.dbunit.operation.InsertOperation; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.transaction.TransactionConfiguration; @@ -30,7 +31,7 @@ * @version $Id: $ */ @ContextConfiguration(locations = {"/spring-tests.xml" }) -@DbUnitExecution(datasets = {"/db1-load.xml" }, dataSource = "dataSource1") +@DbUnitExecution(datasets = {"/db1-load.xml" }, dataSource = "dataSource1", insertOperation = InsertOperation.class) @TestExecutionListeners({TransactionalTestExecutionListener.class }) @Transactional @TransactionConfiguration(transactionManager = "transactionManager1") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |