在 Allure2 中使用 @Step 注释时出现 NoSuchMethodError
NoSuchMethodError when using @Step annotation in Allure2
我正在尝试将 Allure2 实施为我们自动化套件的报告工具,但我似乎 运行 遇到了 @Step
注释的问题。
我有导入,IDE 完美识别它,我可以看到依赖项下的包,特定的 class 可以浏览,一切似乎都是正确的,但是当我尝试 运行 测试我得到这个错误:
java.lang.NoSuchMethodError: io.qameta.allure.aspects.StepsAspects.aspectOf()Lio/qameta/allure/aspects/StepsAspects;
如果我删除 @Step
注释,一切正常,包括报告。
谷歌搜索我所能找到的是这个非常相同的问题似乎在测试期间已经解决了,我使用的是今天的最新版本。我也在另一个项目上实现了这个,它在相同版本上工作得很好,但即使在搜索了两个 pom.xml
文件之后,我也不知道我可能在哪里搞砸了。
这是我的 pom 设置的相关部分。
<properties>
<!--DEPENDENCIES VERSIONS-->
<allure2.version>2.6.0</allure2.version>
<allure.maven.version>2.9</allure.maven.version>
<maven.surefire.plugin.version>2.19.1</maven.surefire.plugin.version>
<aspectj.version>1.9.1</aspectj.version>
</properties>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>${allure2.version}</version>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>${allure.maven.version}</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<systemPropertyVariables>
<allure.directory>${project.build.directory}/allure-results</allure.directory>
<allure.results.directory>${project.build.directory}/allure-results</allure.results.directory>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>testng-run.xml</suiteXmlFile>
</suiteXmlFiles>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>${allure.maven.version}</version>
<configuration>
<properties>
<allure.issues.tracker.pattern>######################</allure.issues.tracker.pattern>
<allure.tests.management.pattern>#######################</allure.tests.management.pattern>
</properties>
</configuration>
</plugin>
我认为没有必要在两个地方指定 allure-maven
依赖项。只是为了排除它,我只在插件部分和同样的问题上尝试过它。
有什么想法吗?
您可能正在使用自定义 aop.xml
配置文件,该文件从编织中排除了 Allure 方面。确保包 io.qameta.allure
包含在 weaver 配置
中
我正在尝试将 Allure2 实施为我们自动化套件的报告工具,但我似乎 运行 遇到了 @Step
注释的问题。
我有导入,IDE 完美识别它,我可以看到依赖项下的包,特定的 class 可以浏览,一切似乎都是正确的,但是当我尝试 运行 测试我得到这个错误:
java.lang.NoSuchMethodError: io.qameta.allure.aspects.StepsAspects.aspectOf()Lio/qameta/allure/aspects/StepsAspects;
如果我删除 @Step
注释,一切正常,包括报告。
谷歌搜索我所能找到的是这个非常相同的问题似乎在测试期间已经解决了,我使用的是今天的最新版本。我也在另一个项目上实现了这个,它在相同版本上工作得很好,但即使在搜索了两个 pom.xml
文件之后,我也不知道我可能在哪里搞砸了。
这是我的 pom 设置的相关部分。
<properties>
<!--DEPENDENCIES VERSIONS-->
<allure2.version>2.6.0</allure2.version>
<allure.maven.version>2.9</allure.maven.version>
<maven.surefire.plugin.version>2.19.1</maven.surefire.plugin.version>
<aspectj.version>1.9.1</aspectj.version>
</properties>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>${allure2.version}</version>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>${allure.maven.version}</version>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<systemPropertyVariables>
<allure.directory>${project.build.directory}/allure-results</allure.directory>
<allure.results.directory>${project.build.directory}/allure-results</allure.results.directory>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>testng-run.xml</suiteXmlFile>
</suiteXmlFiles>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-maven</artifactId>
<version>${allure.maven.version}</version>
<configuration>
<properties>
<allure.issues.tracker.pattern>######################</allure.issues.tracker.pattern>
<allure.tests.management.pattern>#######################</allure.tests.management.pattern>
</properties>
</configuration>
</plugin>
我认为没有必要在两个地方指定 allure-maven
依赖项。只是为了排除它,我只在插件部分和同样的问题上尝试过它。
有什么想法吗?
您可能正在使用自定义 aop.xml
配置文件,该文件从编织中排除了 Allure 方面。确保包 io.qameta.allure
包含在 weaver 配置