Java 在单元测试中使用AspectJ用模拟替换第三方对象
我正在使用SpringWS和WebServiceTemplate类编写一个web服务客户端。在WebServiceTemplate类的碗中,创建了一个WebServiceConnection。WebServiceConnection.send用于实际发送消息。我要做的是截取对WebServiceConnection.send的调用,并将其替换为检查传递给WebServiceConnection.send的对象的逻辑 我觉得这是一个使用方面的好地方。但是,我不确定如何仅在执行单元测试时运行方面。我还希望根据我正在执行的测试运行不同的方面Java 在单元测试中使用AspectJ用模拟替换第三方对象,java,junit,aspectj,spring-ws,Java,Junit,Aspectj,Spring Ws,我正在使用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编译应用程序,那么如果您将运行时编织和编译时编织结合在一起,您仍然可以在测试时使用其他方面。这不是我所希望的解决方案,但似乎很有效。给我的构建脚本增加了一点复杂性,但没有什么我不能处理的。谢谢