Wie schreibt man einen Unit Test für JAXB 2.0 Marshalling
Ich bin mit Jaxb 2.0 api ohne Verwendung von XSD -, und haben das content-Modell mit Anmerkungen. Ich möchte schreiben Sie einen Junit-test für die Klasse, die das marshalling . Mein ursprünglicher plan war es, einen Vergleich der erwarteten XML-String mit der aktuellen für die Behauptung(naheliegendste Wahl). Aber ich finde, dass eine Rangierung erstellt xml, wobei die Eigenschaften/die Reihenfolge der attribute ist nicht vorhersehbar(eigentlich weiß ich nicht, was ist die Standard-Bestellung). Nun, wenn dies der Fall ist, kann ich nicht davon ausgehen, eine vordefinierte xml-String und dann vergleichen Sie diese mit der gemarshallt. Eine andere Möglichkeit, die ich dachte für die Geltendmachung marshaller-Klasse war wie folgt:
1-Inhalt Erstellen-Modell.
2-Marshall.
3-Unmarshall die xml erstellt in Schritt 2, um das Modell.
4-assertion basiert auf dem Modell auf Schritt 1 und Schritt 3 für Eigenschaften/Attribute.
Aber ich habe noch nicht zufriedenstellend. Was wäre die richtige Art und Weise zu schreiben Sie einen Junit-test für das Lotsen in diesem Szenario?.
Obwohl die eigentliche Anwendung, die die xml umgewandelt wird, hängt nicht von der xml-Eigenschaften/attribute-Reihenfolge, aber Junit test scheint zu schwierig sein.
Dank
InformationsquelleAutor user1525825 | 2012-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stieß ich auf Ihre Frage, während googeln für die gleiche Sache. Wenn gefunden, diese post, aber nicht wie die Idee, zu "analysieren" die generierte XML-danach. Nach dem sieben durch die JAXB Javadoc, fand ich einen Ansatz, den ich ganz gerne. Eine JAXB
Marshaller
bietet eine Methode, die ein SAXContentHandler
als argument. Sie können spotten, dassContentHandler
und überprüfen Sie, ob bestimmte Methoden aufgerufen wurden mit der erwarteten Argumente.Hier ein kleines Beispiel. Ich schrieb eine benutzerdefinierte
Attributes
matcher, der nur überprüft, Anwesenheit von bestimmten Attribut-lokale Namen, aber nicht den Blick auf die Werte (noch) nicht. Ich hoffe, Sie finden dies hilfreich:InformationsquelleAutor RobertB
Für diejenigen, die lieber ein einfacheres testen, hier ist was ich zusammen gestellt habe von der post verlinkt, in RobertB Antwort, und die Antworten hier:
unit-Testsjaxbunmarshalling
InformationsquelleAutor Oliver Hernandez
Ich konfrontiert mit dem gleichen problem von XML-marshalling testen. Sie können XmlUnit Bibliothek für vergleichen Sie serialisiert xml-Daten mit etalon. XmlUnit können, vergleichen Sie zwei xml-Format und unterstützt Funktionen wie ignore Raum, Elemente der Neuordnung und einige andere.
Hier ist eine gute Artikel von IBM developerWorks über XmlUnit,
zwar wird beschrieben, ältere version von XmlUnit, es gibt gute Erklärungen und Beispiele.
Vergleichen von xml ist, könnte wie folgt Aussehen:
InformationsquelleAutor Petr Vasiliev
eigentlich schreiben Sie erwarteten Ergebnis zu vergleichen zu dem, was erzeugt wird, durch jaxb, vergessen Sie nicht, fügen Sie "\n" am Ende das erwartete Ergebnis, die wahrscheinlich dazu führen, dass die assertion-Fehler
InformationsquelleAutor Richard Chen