为了账号安全,请及时绑定邮箱和手机立即绑定

Spring boot 2异常堆栈跟踪不完整

Spring boot 2异常堆栈跟踪不完整

烙印99 2021-11-24 16:01:27
Spring boot 2 在测试中报告与 v1 不同的异常。使用 spring boot 1.5.18 的 Stacktrace 报告Running com.test.v1.TestStacktraceTests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.003 sec <<< FAILURE! - in com.test.v1.TestStacktracetest(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.TestStacktraceTests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.022 s <<< FAILURE! - in com.test.v2.TestStacktracetest(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.
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

这与 IDE 相关,而不是 spring 项目固有的。问题可以关闭。


查看完整回答
反对 回复 2021-11-24
?
三国纷争

TA贡献1804条经验 获得超7个赞

查看测试我可以看到您使用JUnit 3样式:


public class TestStacktrace extends TestCase

JUnit 4已经过时了 JUnit 3 将测试类设为 TestCase子类的要求。您应该使用@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,有关更多详细信息,请参见此处。


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 204 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信