我正在用 maven ( here ) 编写我的第一个项目。当我使用 mvn -Dtest=EchoTest test
运行测试时,我得到一个BUILD FAILURE
nonAcceptedTypeVerification(EchoTest) Time elapsed: 0.044 sec <<< ERROR!
java.lang.NullPointerException
at EchoTest.initialize(EchoTest.java:50)
我怎样才能更准确地知道代码中的哪一行触发了 NullPointerExcepion
?
换句话说:如何要求 Maven 打印整个回溯?
我尝试了 mvn -e
,并在 target
子目录中搜索。
编辑
以下是引发 NullPointerException 的行(在 EchoText.java 中):
@Before
public void initialize() throws InterruptedException
{
system = new EchoActorSystem();
echo_actor = system.actorOf(); <-- line 50
}
重点是 EchoActorSystem
是一个相当复杂的类,actorOf
方法需要大量工作,从 system
调用许多函数。例如它调用 super.actorOf()
然后修复结果的一些属性,等等。
我通过添加许多 Sysytem.out.println
来搜索故障行,但我确信这不是正确的工作方式。
最佳答案
mvn test -Dtest=EchoTest -DtrimStackTrace=false
将为您提供完整的堆栈跟踪。
神奇的是-DtrimStackTrace=false
。
Maven 将默认切断 stacktrace下降到仅出现在您的测试中的行。老实说,这是我第一次注意到这种行为,我觉得这是一个非常奇怪的默认设置(我可以理解控制台输出,但在 surfire-reports XML 报告中也是如此?)
关于Java( maven ): how to know where lies the error (useless backtrace),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35506936/