Я могу дать вам некоторые подробности, которые могут не полностью ответить на ваш вопрос.
Чтобы добавить данные в отчет о огурцах в формате HTML, вы можете использовать:
@After
public void addDataToReport(Scenario scenario) { //scenario is provided from Cucumber
scenario.write(string with the information about scenario);
}
Это не будетотформатирован, и я не знаю, как изменить, как отчет отображает его.Каждое из сообщений будет находиться под каждым контрольным примером.
Вы должны каким-то образом передать информацию на @After
ловушку.
Я надеюсь, что кто-то еще ответит с более подробной информацией.
РЕДАКТИРОВАТЬ:
Для того, чтобы хранить информацию о том, что сценарий выполняется в данный момент или даже параллельно, мы можем создать класс для хранения необходимой информации, основываясь наПоток, поэтому он будет Потокобезопасным.
Давайте создадим класс для хранения Scenario
.Давайте назовем это Storage
public class Storage {
private static final HashMap<Thread, Scenario> map = new HashMap<>();
public static void putScenario(Scenario scenario) {
map.put(Thread.currentThread(), scenario);
}
public static Scenario getScenario() {
return map.get(Thread.currentThread());
}
}
Теперь нам нужно как-то получить Scenario
.Это может быть достигнуто с помощью @Before
хука следующим образом:
public class BeforeHook {
@Before(order = 1)
public void getScenario(Scenario scenario) {
Storage.putScenario(scenario);
}
}
@Before
хуки запускаются перед каждым сценарием.Мы получаем информацию о сценарии и помещаем ее в хранилище, чтобы знать, какой сценарий запущен в каком потоке.Помните, что хуки должны быть доступны с помощью параметра glue
в Cucumber Runner!
А теперь, если мы хотим записать в отчет дополнительную информацию:
@Then("Data is saved to the report")
public void data_is_saved_to_the_report() {
System.out.println("Saving data to report");
Storage.getScenario().write("Test data and stuff");
}
Мы просто получаем текущийСценарий из хранилища и метод Scenario.write()
для добавления информации в отчет.
В отчете это будет выглядеть так: