Я использую lo4j2 для протоколирования тестов.
Заюзал листенеры - IInvokedMethodListener, ITestListener
Все вроде бы отлично, но как мне писать в лог Exception которые могут возникать, не оборачивая тестовый метод в try-catch ?
Присоединяюсь к @ArtOfLife. Достаточно странное желание. Exception - это исключительное поведение программы. Если вы его не обрабатываете - значит вы не до конца контролируете флоу ваших тестов, тем более если вы собираетесь catched exception обрабатывать.
Ну и catch(Exception e) - не есть хорошая практика.
Если вы дошли до того, чтобы помещать try / catch в тест, значит, как намекнул @sidelnikovmike, вы потеряли контроль над собственным фреймворком.
Все exceptions у webdirver'a достаточно предсказуемы, чтобы корректно хэндлить их на уровне какой-нибудь BasePage. Если нужно уронить тест, то именно вы сами целенаправленно и должны это делать, чтобы как минимум иметь возможность корректно завершить все остальные процессы.
В случае с SoftAsserts, необработанные эксепшены могут вообще привести к потере verification results.
Основной посыл в том, что чем ниже вы обработаете исключения, тем меньше дублирующих try / catch придется создавать в итоге на уровне пейджей и тестов. Ваши высокоуровневые тесты вообще не должны бросать ничего кроме AssertionError, либо кастомных Exception с целью принудительного завершения без последствий.
П.С. А если нужно заинжектить логгер в методы без глобального рефакторинга, посмотрите в сторону AspectJ. Пример можно найти даже в исходниках Allure - перехват вызовов методов с аннотацией Step.