gpt4 book ai didi

java - JUnit runner 从 java.io.Writer 获取 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 06:36:51 25 4
gpt4 key购买 nike


我从 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 方法只有一个String 参数。这意味着运行者必须将 null 作为参数传递。但这是如何发生的呢?

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

最佳答案

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

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

关于java - JUnit runner 从 java.io.Writer 获取 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com