Я тестирую в тесте JUnit, что в некоторых случаях возникает особая ошибка с аннотацией @Test, и все идет хорошо.Проверка ошибок JUnit и протоколирование
@Test(expected = MyCustomException.class)
public void MyTest(){
...
}
Однако, в моем коде, когда у меня есть такая ошибка, я использую регистратор (SLF4J) таким образом:
catch (IllegalArgumentException e) {
LOG.error("My custom exception occured with {}", inputVar, e);
throw new MyCustomException(inputVar, e);
}
До сих пор поведение хорошо. Когда я создаю свое приложение с maven, все тесты выполняются. Когда описанный тест будет выполнен, тест будет отмечен как переданный, но у меня есть полная стек в моей оболочке с большой ОШИБКОЙ перед ним.
Мой вопрос в том, есть ли способ удалить журналы, когда я запускаю тесты (и, следовательно, не видеть их в оболочке)?
Второй вопрос: должен ли я даже попытаться? Или я должен просто проверить, что все тесты прошли, и не беспокоиться о трассировке стека и ошибке, когда я вижу ее при создании моего приложения? (меняя мой разум, а не меняя код)
Вы не должны пытаться. Я думаю, вы должны попробовать проверить, что вы его запишете. Возможно, вы хотите издеваться над журналом и проверить поведение ... Но чем тест не удается, ваши журналы могут помочь вам разобраться, что происходит. – Jimilian
Вы правы, я могу использовать mock logger для проверки моих журналов, но я бы сделал это в отдельном тесте, который не меняет «проблему» с этим тестом. Вы также правы для отладки, даже если я предпочитаю использовать отладчик рядом с тестом, чем использовать журналы в этом контексте. – gvo
Очень редко регистрировать ошибку * и * вызывать исключение. Если код генерирует исключение, код, задерживающий исключение, должен регистрировать его – NamshubWriter