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

在测试抛出异常消息的消息值时,如下所示:

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:我不想在特定情况下禁止所有单元测试的日志记录.

最佳答案
我猜你正在测试的代码是记录异常并抛出它.不要那样做.

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

>记录异常并继续
>重新抛出异常而不记录它
>包装异常并抛出包装的异常而不进行任何记录

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

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

转载注明原文:java – 不要在JUnit测试中显示抛出的异常消息的堆栈跟踪 - 代码日志