Spring boot 2报告测试中的异常与v1不同。
使用Spring Boot 1.5.18的Stacktrace报告
Running com.test.v1.TestStacktrace
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.003 sec <<< FAILURE! - in com.test.v1.TestStacktrace
test(com.test.v1.TestStacktrace) Time elapsed: 0.002 sec <<< ERROR!
java.lang.NullPointerException: null
at com.test.v1.Util.willThrowException(Util.java:15)
at com.test.v1.TestStacktrace.test(TestStacktrace.java:20)
使用v1,您可以获得整个堆栈跟踪信息,从实际上引发异常的行开始Util.willThrowException(Util.java:15)
使用Spring Boot 2.0.6的Stacktrace报告
Running com.test.v2.TestStacktrace
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.022 s <<< FAILURE! - in com.test.v2.TestStacktrace
test(com.test.v2.TestStacktrace) Time elapsed: 0.006 s <<< ERROR!
java.lang.NullPointerException
at com.test.v2.TestStacktrace.test(TestStacktrace.java:20)
对于v2,您只会得到TestStacktrace.java:20
,这是异常stacktrace中的最后一行。如果stacktrace具有5种方法级别,则只有最后一个调用者才能花费更多时间来确定根本原因。
有人知道要解决此问题的人吗?可以采取什么步骤来获得与版本1相同的异常报告?
更新:这就是TestStacktrace.java文件的外观
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.test.v1;
import junit.framework.TestCase;
import org.junit.Test;
/**
*
* @author Jhovanni <jhovanni@github.com>
*/
public class TestStacktrace extends TestCase {
@Test
public void test() {
Util util = new Util();
util.willThrowException(null);
}
}
Util.java
仅包含一个静态方法,该静态方法在被调用时会直接引发异常。 TestStacktrace.java
v1 / v2几乎相同,只是更改了程序包名称。这两个项目都是最近使用spring initializr创建的,唯一的区别(除了软件包名称)是pom.xml
中的spring boot父版本。
答案 0 :(得分:0)
这与IDE有关,与spring项目无关。问题可以结束。
答案 1 :(得分:0)
看一下测试,我发现您使用的是 JUnit 3 样式:
public class TestStacktrace extends TestCase
JUnit 4 不再符合将测试类设为TestCase子类的JUnit 3要求。您应该使用@Test批注来表示测试:
public class TestStacktrace {
@Test
public void test() {
...
}
}
请注意,要测试Spring Boot应用程序,唯一需要的依赖项是此Starter:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
它包括JUnit,有关更多详细信息,请参见here。