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 有 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.javav1/v2 几乎相同,只是更改了包名。这两个项目都是最近使用 spring initializr 创建的,唯一的区别(除了包名)是pom.xml.
摇曳的蔷薇
三国纷争
相关分类