Интеграция Allure с многомодульным набором тестов

у нас есть набор тестов, который основан на Maven framework и состоит из нескольких модулей. Используемые модули -

  • project [без кода]
  • test [@Test классы включены в / src/main / java, testng.xml на / src / main / resources]
  • core [сконфигурированных для выполнения основных утилит для настройки окружения]
  • driver [настраивает тестовые ковши и модулирует генерацию отчетов с помощью для TestNG]

попытка интегрировать генерация отчетов с использованием allure, я добавил следующее в проект pom.xml -

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <testFailureIgnore>false</testFailureIgnore>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>ru.yandex.qatools.allure.junit.AllureRunListener</value>
                        </property>
                    </properties>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>${maven-deploy-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.2.10.v20150310</version>
                <configuration>
                    <webAppSourceDirectory>${project.build.directory}/site/allure-maven-plugin</webAppSourceDirectory>
                    <stopKey>stop</stopKey>
                    <stopPort>1234</stopPort>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
        <plugin>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</reporting>

также зависимости для того же для тест pom.xml а -

<!--allure related dependencies-->
        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-testng-adaptor</artifactId>
            <version>1.4.16</version>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.github.detro.ghostdriver</groupId>
            <artifactId>phantomjsdriver</artifactId>
            <version>1.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-all</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-java-annotations</artifactId>
            <version>1.5.0.RC2</version>
        </dependency>

Шаг 1 - после выполнения тестов mvn exec:java -pl driver Я вижу / target / allure-результаты создается.

Шаг 2 - mvn jetty:run запущен сервером Jetty

Шаг 3 - но когда я иду в localhost: 8080 в моем браузере, у него просто есть заголовок

:/

вопрос

  • я сомневаюсь, что путь, указанный мной, неверен где-то, поэтому jetty не может найти отчеты, но не мог понять, где. Это для тестов, которые выполняются или для testng.xml ресурсов? Или мне нужно исправить путь где-то только в pom?

  • также я пытаюсь использовать зависимости (в parent project pom) правильно?


обновление 1

используемая конфигурация exec выглядит следующим образом -

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.5.0</version>
            <configuration>
                <mainClass>com.driver.Driver</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

ценю любой ответ.

1 ответов


есть много открытых точек по данному вопросу, которые не ясны из-за отсутствия деталей.

согласно вашему описанию структура проекта, следовательно, следующая:

project
  |
  |--- test-module
  |--- core-module
  |--- driver-module (depends on `core` and `test`)
  |
   \ pom.xml

вы фактически выполняете тесты только через driver модуль и через exec-maven-plugin, однако привлекательность документация указывает классический подход, чтобы выполнить test фаза, то есть фаза Maven, посвященная выполнению тестов (через maven-surefire-plugin, автоматически вызывается Maven во время этой фазы через привязки по умолчанию).

вы на самом деле настроить maven-surefire-plugin как указано в его документации: указание его в родительский pom.xml файл будет в порядке в этом случае, в его pluginManagement раздел > Maven подберет свою глобальную конфигурацию во время default-test выполнение по умолчанию maven-surefire-plugin привязка.

однако весь механизм связан с test этап. Вы выполняете это?

вы не предоставили подробную информацию о exec-maven-plugin и что он должен делать в отношении driver модуль и почему вы должны использовать jetty-maven-plugin для просмотра отчета. Нормально, отчеты по испытанию доступны и могут быть увидены сразу html файлы, нет необходимости размещать их во встроенном сервере причала, если это не требуется общим процессом(CI, развертывание на сервере компании и т. д.). Эти отчеты также должны быть доступны на сайте проектной документации, который может быть создан через site жизненный цикл и его maven-site-plugin.

из ваших данных, вы разделяете jetty-maven-plugin конфигурация, указывающая на site папка: эта папка создается во время test фаза (если вы ее вызываете)? Или во время вашего exec вызов?

что касается того, как вы используете зависимости в Родительском pom, вы на самом деле не разделяли его в своем вопросе, поэтому нелегко помочь. Обычно вы помещаете зависимости в из Родительский pom, которые являются общими для всех модулей (например, классический пример log4j, то, что каждый модуль будет использовать). В противном случае вы бы использовали dependencyManagement раздел родительского pom для управления версиями определенных зависимостей, которые могут использоваться одним или несколькими модулями (но модулям нужно будет повторно объявить их, чтобы эффективно использовать их, опуская их версии, указанные родителем). То есть родительский пом является центральным местом управления и гармонизация.


обновление

о /target/allure-results папка сгенерирована, вам также нужно проверить ее содержимое, чтобы быть допустимым каталогом сайта (то есть, например, он должен содержать index.html).

создание нового проекта Maven webapp и добавление к нему :

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.10.v20150310</version>
            <configuration>
                <webAppSourceDirectory>${project.build.directory}/site</webAppSourceDirectory>
                <stopKey>stop</stopKey>
                <stopPort>1234</stopPort>
            </configuration>
        </plugin>
    </plugins>
</build>

(Примечание: точно в соответствии с вашим вопросом, но указывая просто на )

и выполнение:

mvn clean install site
mvn jetty:run

сайт Maven (генерируется во время site фаза, как указано выше) будет доступна в localhost:8080 (URL пристани по умолчанию). Это потому что index.html был создан.

однако, если я вручную удалю index.html, пристань покажет Directory: / страница, список доступных файлов.

следовательно, скорее всего, отчет allure не генерировал index.html файл, потому что, скорее всего, он не предназначен для его генерации, а просто HTML-отчет, созданный во время test этап.