gpt4 book ai didi

java - AspectJ 不是在测试编译时编织而是在编译时编织。因此,单元测试在使用 Maven 运行时会抛出 ClassNotFoundException

转载 作者:行者123 更新时间:2023-11-30 09:47:37 25 4
gpt4 key购买 nike

我所有的 junit 测试都在 eclipse 中通过,但是当从控制台运行时,它们似乎为 AJ 类 RiskLogAspect.aj 抛出 ClassNotFoundException 我可以验证在 eclipse 中它是否正确编织并提供所需的功能。

我已经尝试向我的项目添加依赖项以确保一切正确。

我开始添加 aspectj-maven-plugin

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
<phase>process-sources</phase>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
<encoding>UTF8</encoding>
<source>1.6</source>
<target>1.6</target>
<aspects>
<includes>
<include>com.idna.riskprofile.RiskLogAspect</include>
</includes>
</aspects>
</configuration>
</execution>
</executions>
</plugin>

然后我添加了以下依赖

      <dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.7</version>
</dependency>

知道出了什么问题吗?

我正在运行 maven 2.0.9 和 jdK 1.6 update 21

在更改我的一些配置后,我注意到在控制台中出现了“[Xlint:adviceDidNotMatch]”,它似乎正在接听我的类(class),但没有正确应用切入点。

对于目标编译,它找到 AJ 文件并正确应用建议,对于测试编译目标,它说 Xlint:adviceDidNotMatch 并为一半的 junit 测试抛出类未找到异常。从控制台:

[INFO] [aspectj:compile {execution: default}]
[INFO] Join point 'method-execution(java.lang.String com.idna.riskprofile.impl.RiskProfileEntryPointImpl.execute(com.idna.riskprofile.domain.RiskProfileRequest))' in Type 'com.idna.riskprofile.impl.RiskProfileEntryPointImpl' (RiskProfileEntryPointImpl.java:35) advised by around advice from 'com.idna.riskprofile.logging.aspects.RiskLogAspect' (RiskLogAspect.aj:35)
[INFO] [aspectj:test-compile {execution: default}]
[WARNING] advice defined in com.idna.riskprofile.logging.aspects.RiskLogAspect has not been applied [Xlint:adviceDidNotMatch]
[INFO] [resources:resources]

更新:似乎没有在测试编译目标上编织建议并不是导致控制台测试失败的原因,而是 spring 配置的另一个问题。

最佳答案

注册aspectj插件还不够,还需要注册一些目标:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<!-- use this goal to weave all your main classes -->
<goal>test-compile</goal>
<!-- use this goal to weave all your test classes -->
</goals>
</execution>
</executions>
</plugin>

关于java - AspectJ 不是在测试编译时编织而是在编译时编织。因此,单元测试在使用 Maven 运行时会抛出 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com