Каратэ - Как добавить Junit RunListener в KarateParallel Runner - PullRequest
2 голосов
/ 17 января 2020

Я пытаюсь добавить RunListener в класс карате ParallelRunner. Я сделал это для бегуна по каратэ, используя @ Karate.class, и добавил собственный бегун. Я записываю данные в infuxdb и генерирую отчеты - это графана, я могу успешно добиться этого в беге на каратэ. Ниже приведен фрагмент кода для того же. Я бегу по каратэ, используя этот пользовательский бегун, куда я добавил этого слушателя. Я хочу добиться того же для параллельного бегуна.

 @Override
public void run(RunNotifier notifier) {
    notifier.addListener(new ExecutionListener());
    super.run(notifier);

Ответы [ 2 ]

2 голосов
/ 17 января 2020

Это не возможно напрямую, параллельный бегун является очень специфичной c реализацией и не имеет никакого отношения к JUnit по своему дизайну.

Поскольку у вас, похоже, есть опыт добавления слушателей JUnit и т.п., Вы можете ссылаться на этот код в случае, если он дает вам какие-либо идеи.

CliExecutionHook.java.

Подробнее о "ExecutionHook" см. здесь: https://github.com/intuit/karate/issues/970#issuecomment -557443551

Но позвольте мне сказать, что я считаю, что вам не нужно пытаться прилагать усилия к отчетам, которые в долгосрочной перспективе не принесут вам никакой пользы, кроме «хорошо выглядеть»: ) И если вы чувствуете, что в каратэ нужно что-то изменить, пожалуйста, внесите свой вклад, это с открытым исходным кодом.

1 голос
/ 25 января 2020

Спасибо за ваше предложение, Питер. Мне удалось отправить сценарий и подробности тестового прогона в прилив базы данных для генерации отчетов в графане. Я просто использовал результаты каратэ, извлек все необходимые значения и назвал его Junit @ After.

 public void writeScenarioResults(List<ScenarioResult> results){
    String status;
    for (ScenarioResult a:results) {
        status=((a.isFailed()==true)?"FAIL":"PASS");
        gb.sendTestMethodStatus(a.getScenario().getName(),status,build);
    }
}
...