मैं एक एकीकरण परीक्षण के लिए DBUnit उपयोग कर रहा हूँ नहीं पहचानता है, और इस त्रुटि में परीक्षण कोड मैं चल रहा हूँ निष्पादित करने से पहले:DBUnit PostgresqlDataTypeFactory enum सूची
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.
स्तंभ नजरअंदाज कर दिया है की एक सूची है enums। डाटासेट इसे इस तरह लिखा है में:
<?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>
मैं DBUnit सवाल जवाब में देखा और this issue देखा था, का कहना है कि मैं समर्थन करने के लिए मेरी enum Postgresql है isEnumType() विधि ओवरराइड करने के लिए है, इसलिए मैं इस किया था:
/**
* 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());
}
लेकिन मुझे अभी भी वही त्रुटि मिलती है, और मुझे नहीं पता कि क्यों। शायद मैं विधि को अच्छी तरह से ओवरराइड नहीं कर रहा हूं? शायद यह मेरी समस्या का कारण भी नहीं है? यदि आपको किसी अन्य कोड की आवश्यकता है तो पूछें, धन्यवाद! अपने मूल्य के साथ enum लागू करने के लिए
क्या आपके डेटासेट 'बैज' में कॉलम 'TRACK_TYPES' है? –
क्या आप मुझे अपना स्रोत कोड भेज सकते हैं? मैं इसे खोदने की कोशिश करूंगा। –
@ केविनवालिस मैंने अभी प्रश्न को अपडेट किया है ताकि आप डेटासेट पंक्ति देख सकें। हां, इसमें वह कॉलम है, लेकिन इसे त्रुटि राज्यों के रूप में अनदेखा किया गया है। – alfizqu