我正在用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
来搜索错误的行,但我确信这不是正确的工作方式。
答案 0 :(得分:3)
mvn test -Dtest=EchoTest -DtrimStackTrace=false
将为您提供完整的堆栈跟踪。
魔术是-DtrimStackTrace=false
。
Maven默认会将stacktrace缩小到您测试中出现的行。老实说,这是我第一次注意到这种行为,这对我来说是一个非常奇怪的默认(我可以理解为控制台输出,但是在surfire-reports XML报告中也是如此?)
答案 1 :(得分:1)
您将在target/surfire-reports
目录中找到完整的堆栈跟踪,文件EchoTest.txt