У меня есть тестовый проект, в котором используется 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>
Что еще нужно обновить здесь, чтобы исправить эту ошибку?