Обновите зависимости для построения отчета Allure после изменения JDK на 11 - PullRequest
1 голос
/ 20 октября 2019

У меня есть тестовый проект, в котором используется Maven + TestNG + Allure, созданный при использовании Oracle JDK: 1.8 (java version "1.8.0_201"), и там и запуск тестов, и генерация отчетов работали просто отлично. Через некоторое время я попытался настроить этот проект на другом ПК, где используется более новый OpenJDK: 11.0.4 (java version "11.0.4")

Мне удалось исправить запущенные тесты, добавив зависимости JAXB:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.1</version>
    </dependency>

, но все жевозникла проблема при попытке сгенерировать отчет об очаровании после запуска теста Вот ошибка, которую я получил:

Generating report to temp directory...
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement
        at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:139)
        at com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector.<init>(JaxbAnnotationIntrospector.java:126)
        at io.qameta.allure.context.JacksonContext.<init>(JacksonContext.java:24)
        at io.qameta.allure.ConfigurationBuilder.useDefault(ConfigurationBuilder.java:50)
        at io.qameta.allure.Commands.createReportConfiguration(Commands.java:158)
        at io.qameta.allure.Commands.generate(Commands.java:63)
        at io.qameta.allure.Commands.serve(Commands.java:88)
        at io.qameta.allure.CommandLine.run(CommandLine.java:136)
        at java.base/java.util.Optional.orElseGet(Optional.java:369)
        at io.qameta.allure.CommandLine.main(CommandLine.java:72)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlElement
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 10 more
[ERROR] Can't generate allure report data

Поиск по ней показывает, что проблема по-прежнему выглядит так, как будто JAXB устарела в Java 11, есть ли какая-либо информация о том, какисправить это именно для очарования отчета? Я считаю, что проблема в моем файле pom.xml выглядит следующим образом:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.edx.tests</groupId>
    <artifactId>FinalProject</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <browser>chrome</browser>
        <browser>firefox</browser>
        <aspectj.version>1.9.4</aspectj.version>
        <allure.version>2.9.0</allure.version>
        <allure.maven.plugin>2.9</allure.maven.plugin>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>${allure.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>src/main/resources/testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <systemPropertyVariables>
                        <browser>${browser}</browser>
                        <allure.results.directory>target/allure-results</allure.results.directory>
                        <allure.link.issue.pattern>https://example.org/issue/{}</allure.link.issue.pattern>
                        <allure.link.tms.pattern>https://example.org/tms/{}</allure.link.tms.pattern>
                    </systemPropertyVariables>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>${allure.maven.plugin}</version>
            </plugin>
        </plugins>
    </build>
    <reporting>
        <!--<excludeDefaults>true</excludeDefaults>-->
        <plugins>
            <plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>${allure.maven.plugin}</version>
                <configuration>
                    <reportVersion>2.4.1</reportVersion>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>

Что еще нужно обновить здесь, чтобы исправить эту ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...