Maven 在IntelliJ中进行单元测试时,自动编织AspectJ失败
我们有一系列的单元测试,在我尝试添加依赖注入的一些方面和在rest端点中调用的方法的日志持续时间之前,它们都通过了 在测试失败之前的单元测试中,我们得到两个奇数错误:Maven 在IntelliJ中进行单元测试时,自动编织AspectJ失败,maven,intellij-idea,junit,aspectj,Maven,Intellij Idea,Junit,Aspectj,我们有一系列的单元测试,在我尝试添加依赖注入的一些方面和在rest端点中调用的方法的日志持续时间之前,它们都通过了 在测试失败之前的单元测试中,我们得到两个奇数错误: [AppClassLoader@14dad5dc] error aspect 'com.lutherconsulting.aphirm.log.DurationLoggingAspect' woven into 'com.lutherconsulting.aphirm.rest.ClientRest' must be define
[AppClassLoader@14dad5dc] error aspect 'com.lutherconsulting.aphirm.log.DurationLoggingAspect' woven into 'com.lutherconsulting.aphirm.rest.ClientRest' must be defined to the weaver (placed on the aspectpath, or defined in an aop.xml file if using LTW).
及
我们使用aspectj maven插件只是让它将方面自动编织到web应用程序中。下面是我们针对Maven的pom.xml中的配置
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<Xlint>ignore</Xlint>
<encoding>UTF-8</encoding>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<goals>
<goal>test-compile</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
据我所知,您正在使用IntelliJ自己的runner而不是maven运行测试,我非常感谢您对的任何想法 因此,您已经通过aspectj maven插件将weaver配置为使用maven运行。问题是IntelliJ runner没有运行maven,因此其weaver插件也没有运行 我可以想出一个主意,您可以在IntelliJ中运行您的maven测试目标,以使用maven配置运行所有测试,因此它将检测aspectj maven插件并运行weaver。在这里,您可以检查如何运行maven目标: 另一方面,根据此链接,您必须在IntelliJ中启用加载时编织 引用链接说: 使用中的下拉列表打开“运行/调试配置”对话框 工具栏。单击“+”图标创建一个新配置并将其命名 e、 g.“测试” 对于这个项目,我选择了“All in package”并搜索测试 “在整个项目中” 现在您所要做的就是添加引入的VM启动参数 AspectJ LTW代理: -javaagent:lib/aspectjweaver.jar “:”后面的部分应该是指向aspectjweaver.jar副本的路径。在这种情况下,我复制了 aspectjweaver.jar从Spring发行版导入lib目录 我的项目(它不需要在项目的类路径上)。你 如果您愿意,也可以使用AspectJ 5最终版本中的jar 此外,您还可以检查以配置AspectJ方面,检查此链接以了解它
据我所知,您正在使用IntelliJ自己的runner而不是maven运行测试 因此,您已经通过aspectj maven插件将weaver配置为使用maven运行。问题是IntelliJ runner没有运行maven,因此其weaver插件也没有运行 我可以想出一个主意,您可以在IntelliJ中运行您的maven测试目标,以使用maven配置运行所有测试,因此它将检测aspectj maven插件并运行weaver。在这里,您可以检查如何运行maven目标: 另一方面,根据此链接,您必须在IntelliJ中启用加载时编织 引用链接说: 使用中的下拉列表打开“运行/调试配置”对话框 工具栏。单击“+”图标创建一个新配置并将其命名 e、 g.“测试” 对于这个项目,我选择了“All in package”并搜索测试 “在整个项目中” 现在您所要做的就是添加引入的VM启动参数 AspectJ LTW代理: -javaagent:lib/aspectjweaver.jar “:”后面的部分应该是指向aspectjweaver.jar副本的路径。在这种情况下,我复制了 aspectjweaver.jar从Spring发行版导入lib目录 我的项目(它不需要在项目的类路径上)。你 如果您愿意,也可以使用AspectJ 5最终版本中的jar 此外,您还可以检查以配置AspectJ方面,检查此链接以了解它
最后,解决这个问题的方法是进入IntelliJ中的项目结构,在AspectJ设置中有一个用于编译后编织模式的复选框。检查此项确保在执行测试之前在Intellij中发生编织。最后,解决此问题的方法是进入Intellij中的项目结构,在AspectJ设置中有一个用于编译后编织模式的复选框。检查这一点可以确保在执行测试之前,Intellij中发生了编织。我也一直在积极地搜索这条路径。我还没有找到如何配置intellij以使用maven配置运行所有测试。你知道怎么做吗?或者告诉我如何设置它的文档?@jspriggs我已经更新了答案,看看它。我也一直在积极地搜索这条路径。我还没有找到如何配置intellij以使用maven配置运行所有测试。你知道怎么做吗?或者告诉我如何设置它的文档?@jspriggs我已经更新了答案,看看它。对我来说,这很有效,我刚刚尝试过。也许您想重新导入Maven项目,或者只是在IDEA中打开Maven自动导入。不过我使用编译时编织。你用LTW吗?对我来说这很有效,我试过了。也许您想重新导入Maven项目,或者只是在IDEA中打开Maven自动导入。不过我使用编译时编织。你使用LTW吗?
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
<complianceLevel>1.8</complianceLevel>
<source>1.8</source>
<target>1.8</target>
<Xlint>ignore</Xlint>
<encoding>UTF-8</encoding>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<goals>
<goal>test-compile</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
- src
| - main
| - java
| - packages
| - resources
| - test
| - java
| - packages
| - resources
- pom.xml