java - 通过连接点进行 spring 方面的单元测试用例?

标签 java spring spring-aop

我有 spring aop 方面,它有如下方法:它是一个将在特定方法之前调用的方面。

public void someMethod(JoinPoint jp) {
        //Somelogic
    }

我需要为此编写一个 junit 测试用例。我如何实例化参数并将其发送到 someMethod ?我的意思是如何用参数填充 JoinPoint?如何在关节点设置参数并传递它?方面在应用程序上下文 xml 文件中配置。

谢谢!

最佳答案

我认为您在这里有几个不错的选择...

  1. JoinPoint 是一个接口(interface)。因此,您应该能够创建自己的“ stub ”实现,它具有您期望的行为。在您的测试中,实例化此 stub 的一个新实例并将其传递给 someMethod 方法。
  2. 使用模拟框架来模拟 JoinPoint 对象,并在模拟上设置预期的行为。如果您一般不熟悉模拟框架,这可能听起来有些陌生,所以我建议您查看 Mockito 上的文档。 ,这是一个流行的模拟框架。

当谈到单元测试时,最佳实践(至少我的)建议测试应始终使用某种模拟/ stub (用于成员和传递的参数)以确保单元测试仅测试单元。如果您要使用 Spring/AspectJ 使用的 JoinPoint 实现,那么您可能还会在 中测试一些实现逻辑>您的 单元测试。如果将来这些实现细节发生变化,您的测试可能会中断,而您无需更改任何代码。

关于java - 通过连接点进行 spring 方面的单元测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15881020/

相关文章:

java - 在调用父类(super class)型构造函数之前无法引用 this

java - 替换 Java 中过时的 Hashtable 类

java - 如何使用以被除数和除数作为参数的递归创建 int[] 除法?

java - 在 Java 8 默认接口(interface)方法上使用 Spring @Transactional 注释是否安全?

spring-boot - 使用 Spring Boot 的 AOP

spring - 从对象本身获取 AOP 代理

java - Spring AOP : confirming CGLIB proxy behaviour

java - Eclipse 无法关闭 BEA WebLogic 服务器

java - ApplicationEventPublisher NullPointerException

java - 无法使 Spring JMX NotificationListener 工作