Frage


Ich bin ein Nullpointer von Maven Surefire Plugin bekommen. Es tritt nur auf einem Test, der DBUnit verwendet. Die todsichere Report-Datei ist leer.

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
org.apache.maven.surefire.booter.SurefireExecutionException: null; nested exception is java.lang.NullPointerException: null
java.lang.NullPointerException
    at java.io.Writer.write(Writer.java:140)
    at java.io.PrintWriter.newLine(PrintWriter.java:436)
    at java.io.PrintWriter.println(PrintWriter.java:585)
    at java.io.PrintWriter.println(PrintWriter.java:696)
    at org.apache.maven.surefire.report.AbstractFileReporter.testSetStarting(AbstractFileReporter.java:59)
    at org.apache.maven.surefire.report.ReporterManager.testSetStarting(ReporterManager.java:219)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.

Wenn ich versuche, den gleichen Test von NetBeans IDE mit einem JUnit Läufer laufen, ich die gleiche Ausnahme erhalten:

Exception in thread "main" java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:140)
        at org.apache.tools.ant.util.DOMElementWriter.write(DOMElementWriter.java:212)
        at org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter.endTestSuite(XMLJUnitResultFormatter.java:171)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:714)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:547)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
Test football.dao.jpa.SimpleJPATest FAILED (crashed)

Die write Methode von java.io.Writer Klasse nur einen String-Parameter hat. Das bedeutet, dass der Läufer muss null als Argument werden übergeben. Aber wie ist das passiert?

public void write(String str) throws IOException {
    write(str, 0, str.length());
}
War es hilfreich?

Lösung

Was youre tatsächlich sehen, ist das line.separator System-Eigenschaft null ist. Ich kann nicht erklären, warum auf dem, was ich sehe, aber wenn Sie können testen, es versuchen zu tun:

java.security.AccessController.doPrivileged(
               new sun.security.action.GetPropertyAction("line.separator"));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top