#java #maven #cucumber #cucumber-jvm
#java #maven #cucumber #cucumber-jvm
Вопрос:
Мой POM в настоящее время выглядит как,
<groupId>net.masterthought</groupId>
<artifactId>maven-cucumber-reporting</artifactId>
<version>2.8.0</version>
<executions>
<execution>
<id>execution</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<projectName>ExecuteAutomation</projectName>
<outputDirectory>${project.build.directory}/cucumber-report-html</outputDirectory>
<cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput>
</configuration>
</execution>
</executions>
</plugin>
Это генерирует отчет, но только с последней функцией. У меня есть несколько бегунов, поэтому я пытаюсь выяснить, либо:
A. Как мне объединить несколько JSON в один отчет или
B. Как мне добавлять к одному файлу JSON по завершении каждого теста?
Любой из них кажется жизнеспособным решением, хотя я бы предпочел A, потому что кажется, что мне не хватает только одной строки в моем pom.xml для этого, поскольку в настоящее время я уже генерирую несколько файлов JSON
Ответ №1:
Проблема в том, что используемая версия (т. е. 2.8) не поддерживает несколько файлов JSON.
Решение заключается в:
<plugin>
<groupId>net.masterthought</groupId>
<artifactId>maven-cucumber-reporting</artifactId>
<version>4.5.0</version>
<executions>
<execution>
<id>execution</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<projectName>ExecuteAutomation</projectName>
<inputDirectory>${project.build.directory}/jsonReports</inputDirectory>
<outputDirectory>${project.build.directory}/cucumber-report-html</outputDirectory>
<jsonFiles>
<!-- supports wildcard or name pattern -->
<param>**/*.json</param>
</jsonFiles>
</configuration>
</execution>
</executions>
</plugin>
Подробнее читайте на https://github.com/damianszczepanik/maven-cucumber-reporting
Ответ №2:
Если вы можете запускать команды bash и, возможно, у вас есть jq, доступный на компьютере, возможно, попробуйте сгенерировать отчеты в файлах с разными именами, а затем используйте jq, чтобы объединить их обратно в один файл
Я делаю нечто подобное, хотя я не запускаю параллельно и не полагаюсь ни на какой плагин, я запускаю с плагином surefire
Отказ от ответственности: я не тестировал переопределение имени отчета с помощью —format, поэтому эта часть может отличаться для вас, но идея та же
mvn test -Dcucumber.options="--format=json:target/cucumber_test1.json"
mvn test -Dcucumber.options="--format=json:target/cucumber_test2.json"
...
jq -s '[.[][]]' target/cucumber_*.json > target/cucumber.json
Ответ №3:
Я просто хочу дополнить предыдущий ответ,
у вас могут быть оба варианта поведения: добавьте файлы json, чтобы получить завершенный, когда вы увидите, сколько раз fetarue был повторно запущен после получения статуса передано, или просто получите окончательное обновление, где функции появятся только один раз с последним статусом после повторного запуска.
Я смог объединить результаты отчета после повторного запуска, просто используя
это более подробно описано здесь, в файле readme, в комментариях к плагину:https://github.com/damianszczepanik/maven-cucumber-reporting
надеюсь, это поможет.