Comparisons bei JUnit/DBUnit

Status
Nicht offen für weitere Antworten.

Phall.us

Mitglied
Hi, Leude.

Der Thread handelt wie oben genannt von Junit (speziell DBUnit), wobei ich ein Paar Problemchen hab.
Es soll eine Datenbank-Tabelle mit einer XML-Datei verglichen werden (Assertion [assertEquals]).
Unten zu sehen ist eine .jpg, die ein Result Comparison anzeigt, nachdem man bei Eclipse nen JUnit Test ausführt.
In dem Fall ist "Expected" (links) der Wert der aus der XML entnommen wird und "Actual" (rechts) das zu vergleichende aus der Datenbank, so wie es aussehen sollte.
Nun ist es aber so, dass EIGENTLICH kein Fehler gefunden wird, da er nichts rotes anzeigt und bei näherem Hinsehen ist auch keiner zu erkennen.
Meine Frage dazu ist jetzt:
Bin ich einfach zu blind, um den Fehler zu finden bzw. woran liegt der Fehler?
Falls nötig, kann ich euch auch noch den Sourcecode mitgeben.

Comparison.jpg
[/img]
 

Phall.us

Mitglied
Original von Wildcard:
Welcher Fehler denn? icon_scratch.gif

Es is ja so, dass Eclipse mir einen Fehler anzeigt, der dort drin sein soll, jedoch ist der Vergleich identisch wie man sieht, wird jedoch TROTZDEM so dargestellt, als sei dort ein Fehler drin.
 

Phall.us

Mitglied
Für dich, für mich, für Eclipse nich.
Wenn man den JUnit Test duchlaufen lässt, dann is er bei der Hälfte des Balkens rot, und zeigt nen comparison failure an:

Code:
junit.framework.ComparisonFailure: null expected:<...' encoding='UTF-8'?>[
<dataset>
  <PLACEMENT BALANCE="A22" KEEPPLACE="blaa" STARTDATE="2002-09-22"/>
</dataset>
]
> but was:<...' encoding='UTF-8'?>[
<dataset>
  <PLACEMENT BALANCE="A22" KEEPPLACE="blaa" STARTDATE="2002-09-22"/>
</dataset>]
>

Würde er dies nicht tun, so könnte ich auch nichteinmal von irgendwoher diesen result comparison beziehen, den du oben als Screenie siehst.

//Edit:
Ums nochmal zu verdeutlichen: Mich stört es, dass ein Fehler angezeigt wird, obwohl garkeiner in Wirklichkeit vorhanden ist. Das Zeug wird in eine Logdatei automatisch eingegeben, doch bringts mir nix, wenn er selbst bei einem fehlerlosen Vergleich etwas in die Datei reinhaut.
 

SnooP

Top Contributor
hmm... ich hatte sowas auch mal war nen toString Problem, sprich die objekte die ich vergleichen wollte waren nicht gleich, aber die toStrings waren trotzdem identisch, was die Fehleranalyse erschwerte *g* ... poste mal den code der junit zunächst und evtl. etwas rumpf der relevanten methoden...
 

Phall.us

Mitglied
Ich hab mich genau an diesem Tutorial hier orientiert, demnach is der Code auch ebenfalls der selbe.
Tut mir leid, dass ich nich was eigenes hier miteinbezieh, aber ich hab keine Ahnung welches Stück genau vom Code hierfür relevant sein sollte.
 

Murray

Top Contributor
Dann ist das Problem wohl dieser Test:
Code:
public void testExportData() throws Exception
{
  IDataSet dataSet = getConnection().createDataSet(new String[]
  {
    TABLE_NAME
  });

  URL url = DatabaseTestCase.class.getResource("/input.xml");
  assertNotNull(url);
  File inputFile = new File(url.getPath());
  File outputFile = new File(inputFile.getParent(), "output.xml");
  FlatXmlDataSet.write(dataSet, new FileOutputStream(outputFile));

  assertEquals(FileUtils.readFileToString(inputFile, "UTF8"), 
    FileUtils.readFileToString(outputFile, "UTF8"));

}

Dabei werden ja zwei Dateien geschrieben und diese dann unter Verwendung der Klasse FileUtils wieder eingelesen und als Strings verglichen. Grundsätzlich würde ich so einen Test für XML-Import/Export-Routinen für problematisch halten, weil es dabei ja lediglich darauf ankommt, dass die XML-Dateien semantisch gleich sind; irgendwelche Formatierungen oder Kommentare bewirken ja keine semantischen Unterschiede, lassen einen Stringvergleich aber natürlich sofort fehlschlagen.
In diesem Fall ist das aber wohl nicht das Problem, denn zumindest das, was in den Screenshots zu sehen ist, ist ja auch inklusive der Formatierungen identisch. Hast Du die beiden Dateien mal im Editor angesehen? Vielleicht fällt dabei ja etwas auf. Ansonsten könntest Du auch in den Test ein paar Ausschreibungen einbauen:

Code:
public void testExportData() throws Exception
{
  IDataSet dataSet = getConnection().createDataSet(new String[]
  {
    TABLE_NAME
  });

  URL url = DatabaseTestCase.class.getResource("/input.xml");
  assertNotNull(url);
  File inputFile = new File(url.getPath());
  File outputFile = new File(inputFile.getParent(), "output.xml");
  FlatXmlDataSet.write(dataSet, new FileOutputStream(outputFile));

  String strIn  = FileUtils.readFileToString(inputFile, "UTF8");
  String strOut = FileUtils.readFileToString(outputFile, "UTF8");   
  System.out.println( "strIn:  \"" + strIn + "\" (length: " + strIn.length() + ")");
  System.out.println( "strOut: \"" + strOut + "\" (length: " + strOut.length() + ")");
  System.out.println( "eq: " + strIn.equals( strOut));

  assertEquals( strIn, strOut);

}
 

Phall.us

Mitglied
Hey Murray,
leider klappt es nach deiner Codebearbeitung auch nicht. :autsch:

Code:
junit.framework.ComparisonFailure: null expected:<...' encoding='UTF-8'?>[
<dataset>
  <PLACEMENT BALANCE="A22" KEEPPLACE="blaa" STARTDATE="2002-09-22"/>
</dataset>
]
> but was:<...' encoding='UTF-8'?>[
<dataset>
  <PLACEMENT BALANCE="A22" KEEPPLACE="blaa" STARTDATE="2002-09-22"/>
</dataset>]
>

Was mir jedoch auffällt ist, dass jeweils hinter "</dataset>" die eckige Klammer eine andere Position einnimmt.
Mit Returns und sonstigen Variationen von Leerstellen hab ichs schon probiert, es funktioniert nich.
 

Murray

Top Contributor
Phall.us hat gesagt.:
Hey Murray,
leider klappt es nach deiner Codebearbeitung auch nicht. :autsch:

Was nicht weiter verwunderlich ist - ich habe ja nur Ausschreibungen eingebaut, die helfen sollten, den Fehler zu finden; die Funktion ist durch die Ausschreibungen nicht verändert.

Aber Du hast den Grund für den Fehler ja schon gefunden: die beiden Strings unterscheiden sich durch einen Zeilenumbruch.

Du kannst jetzt entweder den Code, der die Ausgabedatei generiert, so ändern, dass kein Umbruch am Ende geschrieben wird, oder aber den Vergleich "entschärfen":

Code:
  String strIn  = FileUtils.readFileToString(inputFile, "UTF8");
  String strOut = FileUtils.readFileToString(outputFile, "UTF8");   
  System.out.println( "strIn:  \"" + strIn + "\" (length: " + strIn.length() + ")");
  System.out.println( "strOut: \"" + strOut + "\" (length: " + strOut.length() + ")");
  System.out.println( "eq: " + strIn.equals( strOut));

  //--- in den beiden Strings alle Whitespace-Characters durch Leerzeichen ersetzen
  String strInPlain  = strIn.replaceAll( "\\s", " ").trim();
  String strOutPlain = strOut.replaceAll( "\\s", " ").trim();
  System.out.println( "strInPlain:  \"" + strInPlain + "\" (length: " + strInPlain.length() + ")");
  System.out.println( "strOutPlain: \"" + strOutPlain + "\" (length: " + strOutPlain.length() + ")");
  System.out.println( "eq: " + strIn.equals( strOut));

  assertEquals( strInPlain, strOutPlain);
 

Phall.us

Mitglied
Maaaany thanks to all of u!

Dank dem Code von Murray klappt et jetz, wobei die XML-Nachricht jetzt innerhalb einer Zeile sein muss.
Den Rest werd ich schon für mich rausfinden, hauptsache ich bin weitergekommen was das angeht, vielen Dank nochmal.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
6 Best Practice Feedback zu Service / JUnit Tests Java Basics - Anfänger-Themen 3
M Anfängerfehler - Tests JUnit IntelliJ Java Basics - Anfänger-Themen 24
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
W JUnit Tests Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
L JUnit tests in java Java Basics - Anfänger-Themen 5
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
F JUnit - Was ist mit "side effects" gemeint ? Java Basics - Anfänger-Themen 2
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
L Junit Testing bei XML? Java Basics - Anfänger-Themen 3
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
A Objekt in Methode zurückgeben, JUnit zeigt Error Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
O JUnit - Objektreferenzen Java Basics - Anfänger-Themen 3
G Testen mit JUnit Java Basics - Anfänger-Themen 4
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
C JUnit Tests. How to Java Basics - Anfänger-Themen 5
S Junit Test Java Basics - Anfänger-Themen 2
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
L Junit Tests Java Basics - Anfänger-Themen 10
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
V JUnit Klassen Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
M JUnit Testmethoden mit mehreren assert Methoden Java Basics - Anfänger-Themen 1
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
Z JUnit Exception Java Basics - Anfänger-Themen 2
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
G JUnit-Tests im Programmdurchlauf starten Java Basics - Anfänger-Themen 4
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
T JUnit test failed Java Basics - Anfänger-Themen 3
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
T Junit in Eclipse Java Basics - Anfänger-Themen 1
P JUnit bedeutungen Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
V Frage zu JUnit Tests Java Basics - Anfänger-Themen 3
B JUnit für JFileChooser Java Basics - Anfänger-Themen 6
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
S File vergleich - Junit Java Basics - Anfänger-Themen 6
T JUnit Java Basics - Anfänger-Themen 18
G Junit Java Basics - Anfänger-Themen 4
X JUnit testing Java Basics - Anfänger-Themen 7
T JUnit Suite frage Java Basics - Anfänger-Themen 6
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
S InvocationTargetException bei JUnit Testlauf Java Basics - Anfänger-Themen 2
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
T Junit --Exception testen Java Basics - Anfänger-Themen 15
A JUnit Tests in Jar-Archiv packen Java Basics - Anfänger-Themen 2
G Erste Schritte JUNIT Regressionstests automatisieren Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
M JUnit - nur Failures loggen? Java Basics - Anfänger-Themen 2
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
R String Replace für JUnit Java Basics - Anfänger-Themen 19
T JUNIT Nullpointerexception Java Basics - Anfänger-Themen 3
M JUNIT tests mit ant script ausführen Java Basics - Anfänger-Themen 4
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
S [JUnit] Print Results while running Java Basics - Anfänger-Themen 6
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
T Junit Tests Java Basics - Anfänger-Themen 7
I JUnit Datapoints für mehrere Testklassen Java Basics - Anfänger-Themen 4
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
M Junit tests gehen nicht Java Basics - Anfänger-Themen 2
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5
L JUNIT Testing Java Basics - Anfänger-Themen 3
C jUnit: Erfahren, ob der getestete Code eine Exception gehandelt hat Java Basics - Anfänger-Themen 3
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben