Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 在单元测试中使用AspectJ用模拟替换第三方对象_Java_Junit_Aspectj_Spring Ws - Fatal编程技术网

Java 在单元测试中使用AspectJ用模拟替换第三方对象

Java 在单元测试中使用AspectJ用模拟替换第三方对象,java,junit,aspectj,spring-ws,Java,Junit,Aspectj,Spring Ws,我正在使用SpringWS和WebServiceTemplate类编写一个web服务客户端。在WebServiceTemplate类的碗中,创建了一个WebServiceConnection。WebServiceConnection.send用于实际发送消息。我要做的是截取对WebServiceConnection.send的调用,并将其替换为检查传递给WebServiceConnection.send的对象的逻辑 我觉得这是一个使用方面的好地方。但是,我不确定如何仅在执行单元测试时运行方面。我

我正在使用SpringWS和WebServiceTemplate类编写一个web服务客户端。在WebServiceTemplate类的碗中,创建了一个WebServiceConnection。WebServiceConnection.send用于实际发送消息。我要做的是截取对WebServiceConnection.send的调用,并将其替换为检查传递给WebServiceConnection.send的对象的逻辑

我觉得这是一个使用方面的好地方。但是,我不确定如何仅在执行单元测试时运行方面。我还希望根据我正在执行的测试运行不同的方面


有人对如何做到这一点有什么想法吗?

您可以使用AspectJ进行运行时编织。你不必将方面编译到yout应用程序中,在测试时包含它们就足够了

由于在使用AspectJ时类路径上必须有META-INF/aop.xml,并且必须使用-agent:myPath/aspectjweaver.jar启动JVM,因此只有在测试时才能使用AspectJ


哦,如果您使用AspectJ编译应用程序,那么如果您将运行时编织和编译时编织结合在一起,您仍然可以在测试时使用其他方面。

这不是我所希望的解决方案,但似乎很有效。给我的构建脚本增加了一点复杂性,但没有什么我不能处理的。谢谢