Es scheint keine einfache Möglichkeit zu geben, ein XML-Dokument anhand eines Schemas zu validieren, also habe ich mir gedacht, dass ich meine eigene Bibliothek dafür entwickeln sollte. Mit dieser Bibliothek wird die Validierung gegen ein Schema plötzlich ganz einfach. Früher habe ich in meinen Tests kaum daran gedacht, ein Dokument gegen ein Schema zu validieren, aber jetzt tue ich es ständig.
Wie auch immer, ich werde nur eine kurze Einführung geben. (Und da gibt es wirklich nicht viel zu erzählen.)
Nehmen wir zunächst an, dass Sie einen Dateiverweis auf eine XML-Datei (xml) und einen Dateiverweis auf eine RelaxNG-Schemadatei (schema) haben. Um diese Datei von JUnit aus zu validieren, müssen Sie nun nur noch Folgendes tun:
Wie auch immer, ich werde nur eine kurze Einführung geben. (Und da gibt es wirklich nicht viel zu erzählen.)
Nehmen wir zunächst an, dass Sie einen Dateiverweis auf eine XML-Datei (xml) und einen Dateiverweis auf eine RelaxNG-Schemadatei (schema) haben. Um diese Datei von JUnit aus zu validieren, müssen Sie nun nur noch Folgendes tun:
assertThat(xml, isValidatedBy(schema));
Das war's. Wenn alles in Ordnung ist, werden Sie überhaupt nichts sehen. Liegt jedoch ein Fehler in Ihrer Datei vor, erhalten Sie möglicherweise eine Meldung wie diese:
java.lang.AssertionError:
Erwartet: konform mit sample.rng
aber: Der Tag-Name "foo" ist nicht erlaubt. Mögliche Tag-Namen sind: <Bar> in der Zeile <2>
Um diese detaillierten Meldungen (die den TypeSafeDiagnosingMatcher von Hamcrest 1.2 nutzen) von JUnit zu erhalten, müssen Sie jedoch MatcherAssert von Hamcrest selbst verwenden. Die Assert-Klasse von JUnit wird die Details nicht anzeigen.
Verfasst von

Wilfred Springer
Contact
Let’s discuss how we can support your journey.