java - 测试 Spring AOP 方面

标签 java spring spring-aop

在编写方面时,我如何测试它们是否匹配以及在我希望它们时调用它们?

我在 Spring 2.5.6 中使用 @Aspect 声明。


我不关心功能,这是提取和测试的其他方式。

最佳答案

这里需要测试三种不同的东西:

  1. 您的切入点是否符合您的预期?
  2. 您的建议是否引用了正确的切入点?
  3. 建议是否如您所愿?

要测试切入点,您可以定义一些与预期的“真实”目标具有相同包/类型/方法签名的测试类型,然后针对切入点定义测试建议以确保它们匹配(也定义一些类型不应该匹配以确保切入点不太自由)。我通常通过定义建议来对测试目标中的方法进行回调,设置一个标志,然后断言该标志已设置。

测试建议比较棘手。我倾向于将所有通知主体委托(delegate)给普通方法,然后专注于测试方法而不是通知。

如果您已经这样做了,唯一缺少的部分是您的建议将应用于正确的切入点并实际调用方法。如果您担心这可能是一个问题,您可以通过创建与您的通知执行相匹配的 another 方面来做到这一点,并设置一个标志以显示该方面调用了预期的委托(delegate)方法,并覆盖该方法什么都不做。

关于java - 测试 Spring AOP 方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251317/

相关文章:

aop - 从 ProceedingJoinPoint 检索参数值

java - Spring Aspect 将不会运行

java - Camel 从属性文件中转义特殊字符

java - jena 键入的文字和语言注释 - 导出时如何省略它?

java - Spring的core.JdbcTemplate.query返回什么List实现?

java - Spring Hibernate 映射问题

java - GET/任务不起作用

java - 如何在命令 "java -Djasypt.encryptor.password=somepassword -jar name.jar"中隐藏密码

java - spring boot更改jackson依赖版本

java - Spring aop : can't find referenced pointcut annotation