在编写方面时,我如何测试它们是否匹配以及在我希望它们时调用它们?
我在 Spring 2.5.6 中使用 @Aspect
声明。
我不关心功能,这是提取和测试的其他方式。
最佳答案
这里需要测试三种不同的东西:
- 您的切入点是否符合您的预期?
- 您的建议是否引用了正确的切入点?
- 建议是否如您所愿?
要测试切入点,您可以定义一些与预期的“真实”目标具有相同包/类型/方法签名的测试类型,然后针对切入点定义测试建议以确保它们匹配(也定义一些类型不应该匹配以确保切入点不太自由)。我通常通过定义建议来对测试目标中的方法进行回调,设置一个标志,然后断言该标志已设置。
测试建议比较棘手。我倾向于将所有通知主体委托(delegate)给普通方法,然后专注于测试方法而不是通知。
如果您已经这样做了,唯一缺少的部分是您的建议将应用于正确的切入点并实际调用方法。如果您担心这可能是一个问题,您可以通过创建与您的通知执行相匹配的 another 方面来做到这一点,并设置一个标志以显示该方面调用了预期的委托(delegate)方法,并覆盖该方法什么都不做。
关于java - 测试 Spring AOP 方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1251317/