t.me/atinfo_chat Telegram группа по автоматизации тестирования

Создание отчета Allure при запуске теста из IDE

Теги: #<Tag:0x00007f9b02565de8> #<Tag:0x00007f9b02565c58> #<Tag:0x00007f9b02565848>

Добрый день!
У меня такой вопрос, возможно, немного странный. Есть проект где прикручена аллюра и при запуске теста из консоли с помощью мавена: mvn clean test и далее mvn site отчет создается и все хорошо. Но если пытаюсь запустить тестовый класс из IDE (Intellej IDEA 2017.1 Community), то отчет не собирается, не хватает каких-то данных в /target каталоге.
Вот хотелось бы, чтобы отчет мог формироваться и при запуске из IDE, а не только через консоль. Для CI/CD это не нужно, но лениво через консоль запускать, да и тесты должны дважды пройти. Есть идеи как это сделать и делал ли кто-то что-то подобное?

Вам необходимо подумать что делает команда mvn clean test и команда mvn site. Когда вы запускаете тест из IDE, то вы выполняете только первую часть.
Плюс советую вам почитать доку по Allure и станет немного понятней :wink:

1 Симпатия

Дело в том, что данные для allure отчета формируются с использованием какого-то из allure listener’ов (junit, testng, cucumber). Это все настраивается в surefire плагине maven. Вам по идее нужно в настройках запуска тестов Idea прописать этот же listener. Отчет скорее всего можно будет формировать также mvn site. Но у allure есть и вариант с командной строкой.

1 Симпатия

Из-за того что листнер для testng подключается железобетонно (в отличии от junit, где мы можем выбрать версии junit4 и junit5) - при запуске в IDEA файлы в allure-results создаются успешно (нужно только не забыть создать файлик allure.properties где указать верный путь для папки allure.results.directory=target/allure-results)
Это скорее всего незапланированная фича. Далее в allure2 можно вызвать цель allure:report или allure:serve и отчет сгенерируется (и откроется в браузере во втором случае). Перед следующим прогоном необходимо сделать clean.
Как решить вопрос с запуском junit? allure.properties при этом что интересно учитывается (в случаях когда генерируется attachments, например скриншоты. Но вот остальные результаты не генерируются, потому что не указан нужный listener

Удалось все таки найти решение для JUnit4 и запуска тестов в IDEA
Во первых нужен файлик allure.properties в resources
allure.results.directory=target/allure-results

UPDATE: Оказалось нужно было всего лишь добавить зависимость allure-junit4-aspect в pom

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-junit4-aspect</artifactId>
            <version>2.0-BETA17</version>
        </dependency>

Оказалось что allure-junit4-aspect негативно влияет на запуск тестов с помощью maven

Оказалось нужно использовать версию 15, чтобы и в IDEA и в maven работало

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-junit4-aspect</artifactId>
            <version>2.0-BETA15</version>
        </dependency>

Нашел возможность активировать зависимость только при локальном запуске в IDEA. Профиль не активен при запуске в maven локально (из IDEA) и удаленно на сервере

    <profiles>
        <profile>
            <id>junit4-aspect</id>
            <activation>
                <!--https://stackoverflow.com/questions/24760387/activate-certain-maven-profile-in-intellij-idea-only-->
                <property>
                    <name>idea.maven.embedder.version</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>io.qameta.allure</groupId>
                    <artifactId>allure-junit4-aspect</artifactId>
                    <version>2.0-BETA19</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

В Idea это выглядит так , причем на профиль junit4-aspect вообще не нужно нажимать, галочка там всегда будет серая. При этом другие профили можно менять.