Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte mit DBUit meine Datenbankeintragungen mal testen. Ist eigentlich recht einfach zu verstehen was da so passiert. Aber mit der definition von Null-Werten habe ich meine Probleme
Wie definiere ich in meine XML, dass die Tabelle auch nullwerte haben darf? Den Eintrag in der Dokumentation verstehe ich einfach nicht
IN dieser steht, ich soll das Attribut einfach weg lassen. Dann bekomme ich aber eine Fehlermeldung, dass die Attribute aus der Datenbank (column count) sich nicht mit der XML decken würden.
Die Testklasse die die Anweisungen ausführt und am ende vergleiche soll
[CODE lang="java" title="testklasse"]package abu.dao;
import static abu.dao.DBTestConnect.*;
import static org.junit.jupiter.api.Assertions.*;
Was fehlt (an der Stelle kenne ich DB-Unit nicht) ist die Definition der Tabelle. Anscheinend wird deine Tabelle aus dem Insert-Dataset erzeugt. Wenn du da Elemente weglässt weiß DBUnit nicht, dass diese Spalten überhaupt exisitieren. Irgendwo fehlt dir anscheinend die Definition für DBUnit wie die Tabelle eigentlich aussehen soll.
Also ich denke doch, dass es das sein müsste. Denn das DataSet, das raus kommt, dem fehlen schlicht Felder.
Wenn alle Felder irgendwo beschrieben werden (also nicht immer null sind), dann könnte es evtl. ausreichen, dass man dem Builder noch etwas mehr setzt: IDataSet expectedProduktDataSet = new FlatXmlDataSetBuilder().setColumnSensing(true).build(...);
Aber wenn da auch nicht alle Felder vorkommen, dann wäre es notwendig, die Metadaten einmal bekannt zu geben: IDataSet expectedProduktDataSet = new FlatXmlDataSetBuilder().setMetaDataSet(metaDataSet).build(...);
(Edit: oder natürlich die DTD Variante!)
Das wären zumindest meine Ansätze.
Diesbezüglich auch einfach der Hinweis auf die Doku;
Table metadata is deduced from the first row of each table by default, whereas it is possible to enable the column sensing feature as described in differentcolumnnumberBeware you may get a NoSuchColumnException if the first row of a table has one or more null values. Because of that, this is highly recommended to use DTD. DbUnit will use the columns declared in the DTD as table metadata. DbUnit only support external system URI. The URI can be absolute or relative.
Another way to cope with this problem is to use the ReplacementDataSet.
Was fehlt (an der Stelle kenne ich DB-Unit nicht) ist die Definition der Tabelle. Anscheinend wird deine Tabelle aus dem Insert-Dataset erzeugt. Wenn du da Elemente weglässt weiß DBUnit nicht, dass diese Spalten überhaupt exisitieren. Irgendwo fehlt dir anscheinend die Definition für DBUnit wie die Tabelle eigentlich aussehen soll.