DbUnit bietet eine Reihe von Konfigurationsmöglichkeiten, die
ausführlich in [DbUnit-Properties, 2010] beschrieben
sind. Checkerberry db bietet die Möglichkeit Properties und Features von
DbUnit direkt über die Methode setProperty
zu
setzen.
DbUnit verwendet Properties um beliebige Werte zu setzen, während
Features als Schalter verwendet werden. Für Features sind daher
lediglich die Werte true
oder
false
erlaubt.
Beispiel 2.55. Setzen von DbUnit-Properties und -Features.
public class ConfigurationCallback implements DbConfigurationCallback {
public void configure(DbConfiguration configuration) {
// Setzen des Properties batchSize auf den Wert 50.
configuration.setProperty(DatabaseConfig.PROPERTY_BATCH_SIZE,
Integer.valueOf(50));
// Setzen des Features dataTypeWarning auf false.
configuration.setProperty(DatabaseConfig.FEATURE_DATATYPE_WARNING,
false);
// Setzen der DataTypeFactory für die entsprechende Datenbank.
configuration.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,
new PostgresqlDataTypeFactory());
// Setzen der ForwardOnlyResultSetTableFactory für die Behandlung von
// großen Datenmengen.
configuration.setProperty(
DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY,
new ForwardOnlyResultSetTableFactory());
…
}
}
Das Code-Beispiel zeigt exemplarisch das Setzen eines Properties
(DatabaseConfig.PROPERTY_BATCH_SIZE
) und eines
Features
(DatabaseConfig.FEATURE_DATATYPE_WARNING
) in
DbUnit.
Des Weiteren werden die beiden Properties
DatabaseConfig.PROPERTY_DATATYPE_FACTORY
und
DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY
gesetzt. Die Klasse
org.dbunit.database.DatabaseConfig
enthält Konstanten
für alle IDs der DbUnit-Properties und -Features, sodass die explizite
Angabe der Property-ID nicht erforderlich ist.
Das Property
DatabaseConfig.PROPERTY_DATATYPE_FACTORY
muss gemäß der
verwendeten Datenbank gesetzt werden. Aktuell werden die folgenden
Datenbanken unterstützt:
org.dbunit.ext.db2.Db2DataTypeFactory
org.dbunit.ext.h2.H2DataTypeFactory
org.dbunit.ext.db2.HsqldbDataTypeFactory
org.dbunit.ext.mssql.MsSqlDataTypeFactory
org.dbunit.ext.mysql.MySqlDataTypeFactory
org.dbunit.ext.oracle.OracleDataTypeFactory
org.dbunit.ext.oracle.Oracle10DataTypeFactory
org.dbunit.ext.postgresql.PostgresqlDataTypeFactory
org.dbunit.ext.netezza.NetezzaDataTypeFactory
Für das Property
DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY
gibt
es zwei Ausprägungen: CachedResultSetTableFactory
und
ForwardOnlyResultSetTableFactory
, wobei
CachedResultSetTableFactory
voreingestellt ist. Die
CachedResultSetTableFactory
lädt alle Daten in den
Speicher, sodass diese Factory für große Datenmengen nicht geeignet ist.
Dies betrifft insbesondere die Erstellung von großen Datenbank-Dumps. In
diesem Fall sollte man die Factory temporär auf
ForwardOnlyResultSetTableFactory
umstellen.
Zusätzlich kann es erforderlich sein, dass der Heap-Size des Tests über
die JVM-Argumente – Xms
und – Xmx
erhöht werden muss.