Я использую org.junit.jupiter.api.Assertions
объект, чтобы утверждать, что выброшено исключение:
Assertions.assertThrows(
InvalidParameterException.class,
() -> new ThrowingExceptionClass().doSomethingDangerous());
Упрощенно, выброшенное исключение имеет переменную часть dateTime
в своем сообщении:
final String message = String.format("Either request is too old [dateTime=%s]", date);
new InvalidParameterException(message);
Начиная с версии, я использую 5.4.0
Assertions
, обеспечивающий три метода проверки исключения:
Ни один из них не предоставляет механизм, проверяющий, начинается ли строка с еще одна строка. Последние 2 метода только проверяют, равна ли строка. Как мне легко проверить, начинается ли сообщение об исключении с "Either request is too old"
, так как в пределах одного и того же InvalidParameterException
может быть больше вариантов сообщения? 1036 *
Я бы оценил метод assertThrows(Class<T> expectedType, Executable executable, Predicate<String> messagePredicate)
, в котором предикат предоставил быбросается message
и утверждение проходит, когда предикат возвращает true
, например:
Assertions.assertThrows(
InvalidParameterException.class,
() -> new ThrowingExceptionClass().doSomethingDangerous()
message -> message.startsWith("Either request is too old"));
К сожалению, его не существует. Любое решение?