【问题标题】:Using AspectJ to replace third party objects with mocks in Unit Tests在单元测试中使用 AspectJ 将第三方对象替换为 mock
【发布时间】:2011-01-25 16:29:21
【问题描述】:

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

让我印象深刻的是,这将是一个使用 Aspects 的好地方。但是,我不确定如何仅在执行单元测试时才运行方面。我还希望根据我正在执行的测试运行不同的方面。

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

【问题讨论】:

    标签: java junit aspectj spring-ws


    【解决方案1】:

    您可以将运行时编织与 AspectJ 一起使用。您不必将这些方面编译到您的应用程序中,在测试时包含它们就足够了。

    由于在使用 AspectJ 时类路径上必须有 META-INF/aop.xml,并且由于您必须使用 -agent:myPath/aspectjweaver.jar 启动 JVM,因此您手头有工具来使用 AspectJ仅在测试时。

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

    【讨论】:

    • 这不是我希望的解决方案,但它似乎有效。为我的构建脚本增加了一些复杂性,但没有什么是我无法处理的。谢谢
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多