У меня есть следующий код:Как я утверждаю мое сообщение журнала, когда журнал создается Ломбками
@Component
@Slf4j
public class MyClass {
private OtherClass otherClass;
@Autowired
public MyClass(OtherClass otherClass) {
this.otherClass = otherClass;
}
public void start() {
try {
otherClass.execute();
} catch (FeatureException exception) {
log.warn(exception.getMessage());
}
}
Я хочу сделать тест, чтобы проверить сообщение журнала. Я не знаю как.
Благодаря
Если вам необходимо проверить сообщение журнала, это, вероятно, запах кода. Можете ли вы уточнить, почему вам нужно проверить сообщение журнала? –
@AlastorMoody Существует несколько вариантов использования, в которых требуется конкретное сообщение: клиент запрашивает, чтобы это конкретное сообщение было правильно зарегистрировано, потому что другой инструмент ожидает его; менеджер проекта, который говорит, что я хочу 100% охвата кода, включая записи журналов и т. д. –
Вы можете сделать частное исключение пакета (PPE), которое расширяет исключение FeatureException. Этот PPE имеет метод logMessage(), который строит нужное сообщение без запроса кода вызова для сообщения. Этот PPE предоставляет требуемое сообщение журнала, которое вы хотите, и в вашем модульном тесте вы можете проверить, что выбрано закрытое исключение пакета. От общего вызывающего абонента они все еще могут захватить FeatureException. Помогает ли это решить вашу проблему? Если это сработает, я могу преобразовать этот комментарий в ответ, чтобы вы могли его принять. Если нет, вы можете использовать assertEquals в logMessage. –