单元测试中AOP不生效的问题
问题描述
使用 springboot 实现了 aop,通过 controller 的接口测试,AOP正常执行,但是单元测试的时候 AOP 失效,Debug 也没有走 AOP 的逻辑。
原因
- @EnableAspectJAutoProxy是开启aop功能的注解。
- springboot默认开启@EnableAspectJAutoProxy(true)。
- 但是在单元测试时默认是不开启注解@EnableAspectJAutoProxy,所以就没有开启AOP功能,执行不了AOP逻辑。
解决办法
在单元测试的类上加注解@EnableAspectJAutoProxy(proxyTargetClass = true),开启AOP功能。
/**
* @author hubz
* @date 2022/1/8 22:08
**/
@SpringBootTest
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class TestAopOrder {
@Autowired
private TestAopImpl testAopImpl;
@Test
public void tt() {
testAopImpl.testAOPOrder("haha");
}
}
==注意:== 如果切面上没有@Component注解,那么在执行测试类时将不会加载注解,此时可以使用以下注解加载切面类和待测试类
@ContextConfiguration(classes = {TestAopImpl.class, TestAspect.class})
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果