Escrevendo um caso de teste válido para validar XMLs

5

Como eu escreveria um teste unitário, por exemplo, o JUnit, para validar um arquivo XML?

Eu tenho um aplicativo que cria um documento como um arquivo XML. Para validar essa estrutura XML, preciso criar um objeto mock de XML e comparar cada um de seus elementos com aqueles no arquivo XML 'real'?

IF SO: Qual é a melhor prática para fazer isso? por exemplo. eu usaria os dados XML do arquivo XML 'real' para criar o objeto de simulação? etc.

SE NÃO: O que é um teste de unidade válido?

    
por Mohammad Najar 30.01.2016 / 00:55
fonte

1 resposta

7

Para validar um arquivo XML, primeiro você precisa de uma XSD (XML Schema Definition) que descreva a estrutura de um documento XML válido. Você pode encontrar a especificação para arquivos XSD em W3C .

Entrar em como construir o XSD requer saber como seu XML deve ser estruturado.

Para informações detalhadas sobre a implementação real do Java, confira Qual é a melhor maneira de validar um arquivo XML em um arquivo XSD? no StackOverflow.

Código relevante dessa postagem:

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());
}
    
por 30.01.2016 / 01:28
fonte