gpt4 book ai didi

java - 在 JUnit 测试中不显示抛出的异常消息的堆栈跟踪

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:22 25 4
gpt4 key购买 nike

在像这样测试抛出的异常消息的消息值时:

public void mustFailIfTheActionDoesNotExist() {
try {
getAction(UUID.randomUUID().toString());

fail("Must fail if the action does not exists");
} catch (MyException ex) {
Assert.assertEquals("Exception generated on action", ex.getMessage());
}

异常及其堆栈跟踪在终端上可见。由于我的项目中有数百个类,因此终端变成了一长串异常消息的堆栈跟踪。

有没有办法在运行 Junit 测试时抑制异常输出到屏幕/终端的堆栈跟踪?

PS:我不想禁止所有单元测试的日志记录,只是在特定情况下。

最佳答案

我猜您正在测试的代码正在记录一个异常并抛出它。不要那样做。

在非测试代码中捕获异常时,执行以下操作之一:

  1. 记录异常并继续
  2. 重新抛出异常而不记录它
  3. 包装异常并在不进行任何记录的情况下抛出包装的异常

如果您这样做,那么任何异常最多只会被记录一次。

您还应该确保所有异常都记录在代码的顶层。这可能需要调用 Thread.setDefaultUncaughtExceptionHandler() 或 `Thread.setUncaughtExceptionHandler()

关于java - 在 JUnit 测试中不显示抛出的异常消息的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com