Файл журнала для теста JUnit 5, чтобы прикрепить его к отчету Allure? - PullRequest
0 голосов
/ 29 августа 2018

Мне бы хотелось, чтобы у каждого теста JUnit 5 был свой лог-файл log4j2. Этот файл журнала я хотел бы прикрепить к отчету об испытаниях Allure HTML.

Вчера я попробовал два разных подхода, которые я погуглил, но это не сработало. Одним из них было использование системных свойств в файле конфигурации log4j2. Но они, очевидно, инициализируются только один раз. Теперь, когда я пишу эти строки, мне интересно, есть ли способ вызвать повторную инициализацию конфигурации журнала во время выполнения?

Затем я попробовал метод, при котором я программно обновляю аппендеры. Это было ужасно сложно, глубоко внутри внутренностей log4j2. И это не сработало, какой-то поток уже был закрыт, он сказал в конце, а потом я сдался.

Прежде чем я попробую еще раз, какой будет разумный и безопасный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Мне удалось прикрепить файл журнала для каждого теста. Мне помогли следующие ссылки:

https://stackoverflow.com/a/43404124

https://github.com/sercasti/Log4j-RewriteAppender

В log4j2.xml я использую приложение маршрутизации, а внутри него - приложение файла с fileName = ¨target / logs / $ {ctx: testId} .log¨.

Сложнее было позаботиться о событиях журнала, у которых нет $ {ctx: testId}, поэтому мне пришлось использовать приложение Rewrite, чтобы добавить его на лету.

В JUnit 5 я реализовал BeforeTestExecutionCallback, в котором я делаю «ThreadContext.put (...)». Присоединить существующие файлы журналов для каждого теста к Allure - это более простая часть. Файлы журнала, которые не относятся к конкретному тесту, который я добавляю в результат сборки Jenkins.

Другая идея состояла в том, чтобы опубликовать информацию журнала в Kibana и добавить ссылку на эту информацию в отчете Allure, но я не выбрал этот способ.

Я надеюсь, что эта информация поможет тому, кто хочет сделать то же самое, в качестве отправной точки.

0 голосов
/ 31 августа 2018

В общем случае решение потребует от вас сбора выходных данных, относящихся к текущему тесту, где-нибудь и в конце триггера теста Allure.getLifecycle().addAttachment().

У нас есть много тестовых журналов, порождаемых параллельно в нашем проекте, поэтому мы сохраняем их в H2. После завершения теста мы просто получаем необходимые журналы для каждого уникального идентификатора теста. Я полагаю, что это можно сделать лучше, но это решение, которое просто работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...