Frage

Ich versuche DBUnit zu verwenden, um einige unserer Datenbank Zugangscode zu testen, und ich laufe in ein Problem. Wir verwenden MySQL 5 etwas oder andere als die Datenbank selbst. Ich exportiert einen kleinen Satz von Daten zu einem FlatXmlDataSet und wenn ich ein Setup des Testfall, wirft es eine Ausnahme, die besagt, „Daten abgeschnitten für Spalte‚FHEIGHT_FLAG‘in Zeile 1“. Die Säule FHEIGHT_FLAG ist definiert als

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

Die Art und Weise der enum Daten an die eingefügt wird Datenbank, wenn der tatsächliche Wert für die Quelle der Daten nicht wahr ist, dann ist die Spalte enthält tatsächlich „“ (leere Zeichenkette). Der Code der Datenbank mit macht nur die Annahme, dass, wenn der Wert aus der Datenbank zur Verfügung gestellt nicht ‚t‘ ist, dann ist es falsch sein muss. Wie kann ich diese gehen machen? Ich kann die Quelldaten nicht reparieren, also muss ich versuchen, etwas mit dem Testfall zu tun.

War es hilfreich?

Lösung

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

(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"));

Andere Tipps

Ich landete die Testdatenbank FHEIGHT_FLAG Spalte modifiziert sein

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

auf diese Weise alle leeren String-Werte durften wieder eingefügt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top