Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过连接点的spring方面的单元测试用例?_Java_Spring_Spring Aop - Fatal编程技术网

Java 通过连接点的spring方面的单元测试用例?

Java 通过连接点的spring方面的单元测试用例?,java,spring,spring-aop,Java,Spring,Spring Aop,我有SpringAOP方面,它有如下方法:它是一个在特定方法之前调用的方面 public void someMethod(JoinPoint jp) { //Somelogic } 我需要为此编写一个junit测试用例。如何实例化参数并将其发送到someMethod?我的意思是如何用args填充JoinPoint?如何在关节点设置参数并传递?方面在应用程序上下文xml文件中配置 谢谢 我想你这里有几个不错的选择 JoinPoint是一个接口。因此,您应该能够创建自己的具

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

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


谢谢

我想你这里有几个不错的选择

  • JoinPoint
    是一个接口。因此,您应该能够创建自己的具有预期行为的“存根”实现。在测试中,实例化此存根的新实例,并将其传递到
    someMethod
    方法中
  • 使用模拟框架模拟
    连接点
    对象,并在模拟上设置预期行为。如果您不熟悉一般的模拟框架,那么这听起来可能有些陌生,因此我建议您查看上的文档,这是一个流行的模拟框架

  • 当涉及到单元测试时,最佳实践(至少是我的)建议测试应该始终使用某种类型的模拟/存根(对于成员和通过的参数),以确保单元测试只测试单元。如果您要使用Spring/AspectJ使用的
    JoinPoint
    实现,那么您也可能在单元测试中测试它们的实现的一些逻辑。如果这些实现细节在将来发生更改,您的测试可能会中断,而您不会对代码进行任何更改。

    我了解了这一点,发现最简单的方法是创建一些方面应该绑定到的“模拟方法”,然后您可以在测试中调用这些方法,并针对方面的功能进行断言

    模拟连接点既困难又耗时,因为您通常希望访问连接点中的许多本机内容,例如声明为final的反射对象,因此很难进行模拟