如何使用 AspectJ maven 插件 运行 我的 java 测试
How to run my java tests with AspectJ maven plugin
我想通过 AOP 记录我的测试。我有 class AspectLogger,我在其中定义了切入点和建议。当我 运行 aspectj:test 编译时,在输出中我看到建议已添加到测试中。喜欢
[INFO] Join point 'method-execution(void Back_end_task.APITest.test())' in Type 'Back_end_task.APITest' (APITest.java:22) advised by before advice from 'AspectLogger' (AspectLogger.java:26)
但是当我在输出中 运行 mvn clean test
时,我看到这样的错误:
java.lang.NoSuchMethodError: AspectLogger.aspectOf()LAspectLogger;
at Back_end_task.APITest.test(APITest.java:23)
通过搜索这个问题,我发现我应该将我的项目作为依赖项添加到 aspectj-maven-plugin 的 <aspectLibraries>
bloc,并将我的项目的依赖项添加到 <dependencies>
bloc pom.xml。但问题在于:
[FATAL] 'dependencies.dependency MyTraining:project:1.0-SNAPSHOT' for MyTraining:project:1.0-SNAPSHOT is referencing itself
这是 link 我的 project
请多多指教。我错过了什么?我做错了什么?我想学习如何使用方面。
您构建中的问题是您使用编译时织入,然后 运行 使用加载时织入代理进行测试。后者不是必需的。 This commit 修复您的构建:
--- pom.xml (revision 8aa7b98f5c6c15676580783c2f351c253212fbee)
+++ pom.xml (revision 72f37c4377b7189578f6afd5c45473efd8c63bc4)
@@ -89,12 +89,6 @@
<version>${aspectj.version}</version>
</dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
-
<!--<dependency>
<groupId>MyTraining</groupId>
<artifactId>project</artifactId>
@@ -156,9 +150,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
- <argLine>
- -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
- </argLine>
<systemProperties>
<property>
<name>allure.results.directory</name>
@@ -166,13 +157,6 @@
</property>
</systemProperties>
</configuration>
- <dependencies>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
- </dependencies>
</plugin>
<plugin>
我还在 my GitHub fork and created a pull request 中为您改进了 POM 中的一些小东西。喜欢就采纳吧
我想通过 AOP 记录我的测试。我有 class AspectLogger,我在其中定义了切入点和建议。当我 运行 aspectj:test 编译时,在输出中我看到建议已添加到测试中。喜欢
[INFO] Join point 'method-execution(void Back_end_task.APITest.test())' in Type 'Back_end_task.APITest' (APITest.java:22) advised by before advice from 'AspectLogger' (AspectLogger.java:26)
但是当我在输出中 运行 mvn clean test
时,我看到这样的错误:
java.lang.NoSuchMethodError: AspectLogger.aspectOf()LAspectLogger;
at Back_end_task.APITest.test(APITest.java:23)
通过搜索这个问题,我发现我应该将我的项目作为依赖项添加到 aspectj-maven-plugin 的 <aspectLibraries>
bloc,并将我的项目的依赖项添加到 <dependencies>
bloc pom.xml。但问题在于:
[FATAL] 'dependencies.dependency MyTraining:project:1.0-SNAPSHOT' for MyTraining:project:1.0-SNAPSHOT is referencing itself
这是 link 我的 project
请多多指教。我错过了什么?我做错了什么?我想学习如何使用方面。
您构建中的问题是您使用编译时织入,然后 运行 使用加载时织入代理进行测试。后者不是必需的。 This commit 修复您的构建:
--- pom.xml (revision 8aa7b98f5c6c15676580783c2f351c253212fbee)
+++ pom.xml (revision 72f37c4377b7189578f6afd5c45473efd8c63bc4)
@@ -89,12 +89,6 @@
<version>${aspectj.version}</version>
</dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
-
<!--<dependency>
<groupId>MyTraining</groupId>
<artifactId>project</artifactId>
@@ -156,9 +150,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
- <argLine>
- -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
- </argLine>
<systemProperties>
<property>
<name>allure.results.directory</name>
@@ -166,13 +157,6 @@
</property>
</systemProperties>
</configuration>
- <dependencies>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>${aspectj.version}</version>
- </dependency>
- </dependencies>
</plugin>
<plugin>
我还在 my GitHub fork and created a pull request 中为您改进了 POM 中的一些小东西。喜欢就采纳吧