2011-10-07 9 views
18

Estoy escribiendo algunas pruebas unitarias que están deliberadamente pasando malas secuencias al analizador XML Java DOM.Cómo evitar que se escriban errores de análisis XML en System.err (stderr)?

E.g.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 

String message_xml = ""; // Empty string, not valid XML!!! 
ByteArrayInputStream input = new ByteArrayInputStream(message_xml.getBytes()); 
Document doc = db.parse(input); 

Esto es tirar correctamente un SAXParseException (que es lo que espera mi prueba de la unidad). Pero también está escribiendo un mensaje a System.err (stderr) en la consola Java:

[Fatal Error] :1:1: Premature end of file. 

¿Hay alguna manera de configurar el analizador XML no escribir en stderr?

Estoy usando Java 1.6SE.

+0

intente configurar madereros del paquete? Pero ¿por qué importa? Son pruebas unitarias. –

Respuesta

24

instalar su propia ErrorHandler:

db.setErrorHandler(new ErrorHandler() { 
    @Override 
    public void warning(SAXParseException e) throws SAXException { 
     ; 
    } 

    @Override 
    public void fatalError(SAXParseException e) throws SAXException { 
     throw e; 
    } 

    @Override 
    public void error(SAXParseException e) throws SAXException { 
     throw e; 
    } 
}); 
Cuestiones relacionadas