我猜这是一个junit和Logback问题。在我的项目中,Logging是通过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
将在日志中打印出来,因为它是故意抛出的。
当我通过日志调试时,有太多这种预期的异常,我只是想知道有没有办法从日志中删除它们?当然,仍然会打印其他不期望的例外情况。
答案 0 :(得分:0)
Logback具有支持基于特定逻辑的过滤器和评估的功能。
此链接可能是您可能正在寻找的内容:
https://logback.qos.ch/manual/layouts.html#Evaluators
您可以将logback配置为执行或不执行某项操作(如果它是任何例外情况的实例) - 在您的情况下JPException
答案 1 :(得分:-1)
试试这个: