我正在使用 Spring-WS 和 WebServiceTemplate 类编写一个 Web 服务客户端。在 WebServiceTemplate 类的碗中,创建了一个 WebServiceConnection。 WebServiceConnection.send 用于实际发送消息。我想要做的是拦截对 WebServiceConnection.send 的调用,并将其替换为一些检查传递给 WebServiceConnetion.send 的对象的逻辑。
我觉得这将是使用方面的好地方。但是,我不确定如何仅在执行单元测试时才运行这些方面。我还希望根据我正在执行的测试运行不同的方面。
有人对如何做到这一点有任何想法吗?
最佳答案
您可以将运行时编织与 AspectJ 结合使用。您不必将这些方面编译到您的应用程序中,在测试时包含它们就足够了。
由于使用 AspectJ 时类路径上必须有 META-INF/aop.xml,并且您必须使用 -agent:myPath/aspectjweaver.jar 启动 JVM,因此您手头有使用 AspectJ 的工具仅在测试时。
哦,如果您使用 AspectJ 来编译应用程序,并且将运行时编织和编译时编织结合起来,则在测试时仍然可以使用其他方面。
关于java - 在单元测试中使用 AspectJ 用模拟替换第三方对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796127/