2010-11-15 2 views

ответ

1

На самом деле я знаю ответ. Но поскольку мне потребовалось некоторое время, чтобы заставить его работать, я решил поделиться своим решением. Это веб-макрос. Вы можете также использовать только последовательный, если вы хотите ...

<macrodef name="verifySchema" description="Validate the current document against its schema"> 
<sequential> 
    <groovy description="validate schema" > 
     import javax.xml.parsers.ParserConfigurationException 
     import javax.xml.parsers.SAXParser 
     import javax.xml.parsers.SAXParserFactory 

     import java.io.InputStreamReader 


     import org.xml.sax.ErrorHandler 
     import org.xml.sax.InputSource 
     import org.xml.sax.SAXException 
     import org.xml.sax.SAXParseException 
     import org.xml.sax.XMLReader 

     class MyHandler implements org.xml.sax.ErrorHandler { 
      void warning(SAXParseException e) throws SAXException { 
       println 'WARNING: ' + e.getMessage() 
      } 

      void error(SAXParseException e) throws SAXException { 
       println 'ERROR: ' + e.getMessage() 
       throw e 
      } 

      void fatalError(SAXParseException e) throws SAXException { 
       println 'FATAL: ' + e.getMessage() 
       throw e 
      } 
     } 


      def factory = SAXParserFactory.newInstance() 
      factory.setValidating(true) 
      factory.setNamespaceAware(true) 

      def parser = factory.newSAXParser() 
      def reader = parser.getXMLReader() 
      reader.setErrorHandler(new MyHandler()) 
      def response = step.context.currentResponse.webResponse 
      reader.parse(new InputSource(new InputStreamReader(response.contentAsStream,"UTF-8"))) 
    </groovy> 
</sequential> 

Если вы хотите потерпеть неудачу тест на предупреждения тоже добавить перекидной заявление обработчика соответственно.