Scrittura di un test case valido per la convalida di XML

5

Come scriverei un test unitario, ad esempio JUnit, per la convalida di un file XML?

Ho un'applicazione che crea un documento come file XML. Per convalidare questa struttura XML, devo creare un oggetto mock XML e confrontare ciascuno dei suoi elementi con quelli del file XML "effettivo"?

SE COSÌ: Allora qual è la migliore pratica per farlo? per esempio. utilizzerei i dati XML dal file XML "effettivo" per creare l'oggetto fittizio? ecc.

SE NON: Che cos'è un test di unità valido?

    
posta Mohammad Najar 30.01.2016 - 00:55
fonte

1 risposta

7

Per convalidare un file XML, è prima necessario un XML Schema Definition (XSD) che descrive la struttura di un documento XML valido. Puoi trovare le specifiche per i file XSD all'indirizzo W3C .

Per capire come creare l'XSD è necessario sapere come deve essere strutturato il tuo XML.

Per informazioni dettagliate sull'attuale implementazione Java di questo, consulta Qual è il modo migliore per convalidare un file XML su un file XSD? su StackOverflow.

Codice pertinente da quel post:

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
...

URL schemaFile = new URL("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd");
Source xmlFile = new StreamSource(new File("web.xml"));
SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
try {
  validator.validate(xmlFile);
  System.out.println(xmlFile.getSystemId() + " is valid");
} catch (SAXException e) {
  System.out.println(xmlFile.getSystemId() + " is NOT valid");
  System.out.println("Reason: " + e.getLocalizedMessage());
}
    
risposta data 30.01.2016 - 01:28
fonte

Leggi altre domande sui tag