Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JUnit运行程序从java.io.Writer获取NullPointerException_Java_Junit_Surefire - Fatal编程技术网

JUnit运行程序从java.io.Writer获取NullPointerException

JUnit运行程序从java.io.Writer获取NullPointerException,java,junit,surefire,Java,Junit,Surefire,我从Maven Surefire插件中得到一个NullPointerException。它仅在使用DBUnit的测试中发生。Surefire报告文件为空 ------------------------------------------------------- T E S T S ------------------------------------------------------- org.apache.maven.surefire.booter.SurefireExecution


我从Maven Surefire插件中得到一个NullPointerException。它仅在使用DBUnit的测试中发生。Surefire报告文件为空

-------------------------------------------------------
 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.
当我尝试使用JUnit运行程序从NetBeans IDE运行相同的测试时,我得到了相同的异常:

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)
java.io.Writer类中的write方法只有一个字符串参数。这意味着运行程序必须传递null作为参数。但这是怎么发生的呢

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

您实际看到的是line.separator系统的属性为null。根据我所看到的,我无法解释为什么,但如果您可以测试它,请尝试:

java.security.AccessController.doPrivileged(
               new sun.security.action.GetPropertyAction("line.separator"));

+1,快来吧。作为参考,这可以从
PrintWriter.newLine
调用中派生出来,该调用仅遵从
out.write(lineSeparator)
。谢谢!line.separator属性确实为null。我使用仅包含DBUnit的4个属性的Properties对象调用System.setProperties(props)导致了它。我不知道这个方法会替换所有属性。我应该更仔细地阅读javadoc。再次感谢你们两位!超级棒。只是花了几个小时试着找出原因。和您一样,有人使用了System.setProperties(props)方法。