2013-06-03 2 views
0

Я использую набор тестов JUnit, чтобы запустить кучу тестовых примеров JUnit, и у меня не было ошибок и сбоев, и все тесты выполнялись правильно, но у меня есть следующее сообщение отображается в консоли, и я не знаю, в чем смысл этого:Неустранимая ошибка при запуске набора тестов JUnit

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

, когда я использую обработчик ошибок я получил следующий результат:

caught exception(fatal error) 
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) 
    at com.nc.inotify.dp.xml.impl.XmlSource.convert(XmlSource.java:328) 
    at com.nc.inotify.dp.xml.impl.XmlSource.update(XmlSource.java:299) 
    at com.nc.inotify.dp.xml.junit.TXmlSource.testUpdate(TXmlSource.java:106) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

и это метод, который содержит ошибку :

private Document convert(String xml) throws ParserConfigurationException, 
      SAXException, IOException { 

     // convert String into InputStream 
     InputStream is = new ByteArrayInputStream(xml.getBytes()); 

     // convert InputStream to Document 
     domFactory = DocumentBuilderFactory.newInstance(); 
     domFactory.setNamespaceAware(true); 
     builder = domFactory.newDocumentBuilder(); 
     builder(builder); 
     is.reset(); 
     Document doc = builder.parse(is); 
     is.close(); 

     return doc; 
    } 
+4

Я думаю, что «фетальная ошибка» что-то иначе полностью ... –

+0

Это в Eclipse? –

+0

@MattewFarwell да это в затмении –

ответ

2

Это выглядит как ошибка вашего синтаксического анализатора (или любого используемого XML-парсера). Чтобы найти ошибку, попробуйте добавить обработку ErrorHandler в xml. Например, для DocumentBuilder, вы можете можете позвонить setErrorHandler():

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = dbf.newDocumentBuilder(); 
builder.setErrorHandler(new ErrorHandler() { 

    @Override 
    public void warning(SAXParseException exception) throws SAXException { 
    System.err.println("warning: caught exception"); 
    exception.printStackTrace(System.err); 
    } 

    @Override 
    public void fatalError(SAXParseException exception) throws SAXException { 
    System.err.println("fatalError: caught exception"); 
    exception.printStackTrace(System.err); 
    } 

    @Override 
    public void error(SAXParseException exception) throws SAXException { 
    System.err.println("error: caught exception"); 
    exception.printStackTrace(System.err); 
    } 
}); 

Это даст вам лучше подсказку о том, что происходит.

Для получения дополнительной информации см. com.sun.org.apache.xerces.internal.util.DefaultErrorHandler#fatalError, и я верю, что создает это сообщение об ошибке.

EDIT: С StackTrace, и дополнительным кодом, он выглядит как:

  1. xml пуст
  2. xml имеет другую кодировку из одного указанных вами в XML.

Для проверки 2, делает ваш XML содержит не-ASCII символы, или же XML есть правильное объявление с правильной кодировкой, например:

<?xml version="1.0" encoding="us-ascii"?> 
<?xml version="1.0" encoding="windows-1252"?> 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml version="1.0" encoding="UTF-8"?> 
<?xml version="1.0" encoding="UTF-16"?> 
+0

Я использую XPath не SAX, и я не знаю, что это за журнал. вы можете мне помочь? –

+0

заменил logger.error на System.err.println/printStackTrace. XPath не должен быть другим, попробуйте добавить обработчик ошибок в любом случае. –

+0

Я просто использовал обработчик ошибок (любезно смотрю на вопрос) –

Смежные вопросы