I DBUnit für einen Integrationstest bin mit, und vor dem Test die Ausführung von Code ich in diesen Fehler renne:DBUnit PostgresqlDataTypeFactory nicht erkennt nicht Aufzählungsliste
badges.track_types data type (2003, '_text') not recognized and will be ignored. See FAQ for more information.
org.dbunit.dataset.NoSuchColumnException: badges.TRACK_TYPES - (Non-uppercase input column: track_types) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
die Spalte, die ignoriert wird, ist eine Liste der enums. In dem Datensatz es wie folgt geschrieben:
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
// More info ...
<badges name="30'000" description="30k a day" image_name="30000.png" threshold_val="30000.00000000" has_many="true" id="45" track_types="{TRACK_GENERIC}" "/>
</dataset>
ich in der DBUnit FAQ und sah this issue, die besagt, dass ich die isEnumType() -Methode außer Kraft zu setzen haben meine Enum zu unterstützen Postgresql ist, also tat ich dies:
/**
* Override method to set custom properties/features
*/
protected void setUpDatabaseConfig(DatabaseConfig config) {
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new PostgresqlDataTypeFactory(){
public boolean isEnumType(String sqlTypeName) {
if(sqlTypeName.equalsIgnoreCase("track_types")){
return true;
}
return false;
}
});
config.setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new DefaultMetadataHandler());
}
Aber ich bekomme immer noch den gleichen Fehler, und ich weiß nicht warum. Vielleicht übertreibe ich die Methode nicht gut? Vielleicht ist es nicht einmal die Ursache meines Problems? Wenn Sie einen anderen Code benötigen, fragen Sie einfach, danke!
Enthält Ihr Datensatz 'badges' eine Spalte' TRACK_TYPES'? –
Können Sie mir Ihren Quellcode schicken? Ich werde versuchen, mich darauf einzulassen. –
@KevinWallis Ich habe gerade die Frage aktualisiert, damit Sie die Datensatzzeile sehen können. Ja, es enthält diese Spalte, aber es wird ignoriert, wie der Fehler angibt. – alfizqu