Maven Cucumber сообщает о нескольких файлах JSON

#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

надеюсь, это поможет.