gpt4 book ai didi

java - 在 Junit 中,如何防止打印故意抛出并已在日志中捕获的预期异常?

转载 作者:行者123 更新时间:2023-12-05 08:09:02 25 4
gpt4 key购买 nike

我想这是一个 junit 和 Logback 问题。在我的项目中,日志记录是通过 slf4j 完成的。日志记录实现是 Logback。

所以我有一个类:

@Component
@Slf4j
public class A {
private final ObjectMapper objectMapper = new ObjectMapper();

private static final String DEFAULT_REPLY = "just continue...";

public String doSomething(Object value) {
try {
return objectMapper.methodAbc(value);
} catch (JPException e) {
log.error("Exception while processing value", e);
return DEFAULT_REPLY;
}
}
}

及其测试类

@RunWith(MockitoJUnitRunner.class)
public class ATest {
@Before
public void init() {
processor = new A();
}

@Test
public void test() throws Exception {
ObjectMapper mockMapper = mock(ObjectMapper.class);
JP mockJp = mock(JP.class);
Exception thrownException = new JPException(mockJp, null);

when(mockMapper.methodAbc(any())).thenThrow(thrownException);

String result = processor.doSomething("abc");

assertTrue(result.equals("just continue..."));
}
}

我对测试本身没有任何问题。正如您所见,在测试中,JPException 将在日志中打印出来,因为它是有意抛出的。

当我通过日志调试时,有太多这种预期的异常,我只是想知道有没有办法从日志中删除它们?当然,还会打印出其他意外情况。

最佳答案

Logback 具有支持基于特定逻辑的过滤器和评估的功能。

此链接可能是您要查找的内容:

https://logback.qos.ch/manual/layouts.html#Evaluators

如果它是任何异常的实例,您可以将您的 logback 配置为执行或不执行某些操作 - 在您的情况下 JPException

关于java - 在 Junit 中,如何防止打印故意抛出并已在日志中捕获的预期异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122824/

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