2009-04-01 5 views
1

Ich versuche dbunit zu verwenden, um einige unserer Datenbankzugriffscode zu testen, und ich stehe auf ein Problem. Wir verwenden MySQL 5 etwas wie die Datenbank selbst. Ich exportierte einen kleinen Satz von Daten in einen FlatXmlDataSet und wenn ich den Testfall einrichtet, löst es eine Ausnahme aus, die besagt, dass Daten für Spalte "FHEIGHT_FLAG" in Zeile 1 abgeschnitten sind ". Die Säule FHEIGHT_FLAG ist definiert alsWie bekomme ich dbunit, um gut mit MySQL-Enum-Datentypen zu spielen?

enum('t','f') default NULL 

, wie die enum Daten in die Datenbank eingefügt werden, wenn der tatsächliche Wert für die Quelle der Daten nicht wahr ist, dann wird die Spalte „“ (leere Zeichenkette) tatsächlich enthält. Der Code, der die Datenbank verwendet, stellt lediglich die Annahme auf, dass, wenn der von der Datenbank bereitgestellte Wert nicht "t" ist, er falsch sein muss. Wie kann ich das schaffen? Ich kann die Quelldaten nicht reparieren, daher muss ich versuchen, etwas mit dem Testfall zu tun.

Antwort

2

Export ein neuer Datensatz mit "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename";

(Aber die Spalten bestellen, wie sie in der realen Tabelle sind, natürlich.)

final String select = "select case when FHEIGHT_FLAG = 't' then 't' else 'f' end as FHEIGHT_FLAG, ....(all other columns) .... from tablename"; 
// database connection 
Class driverClass = Class.forName("package.of.jdbcDriver"); 
Connection jdbcConnection = DriverManager.getConnection(
     "jdbc:url:of:db", "user", "pass"); 
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection); 

// partial database export 
QueryDataSet partialDataSet = new QueryDataSet(connection); 
partialDataSet.addTable("Tablename", select); 

FlatXmlDataSet.write(partialDataSet, new FileOutputStream("mydataset.xml")); 
+0

Das ist ziemlich schlau. –

0

ich die Testdatenbank FHEIGHT_FLAG Spalte Modifizieren endete zu sein

so dürfen alle leeren String-Werte zurück eingefügt werden.

Verwandte Themen