我有一个 java 应用程序,它有多个模块 - (GWT-)RPC 服务,,perf-library
(remote-client
我的团队编写/拥有的所有 java 代码)。包含 Spring AOP 方面相关的perf-library
代码,主要用于将截获的方法日志推送到数据存储。现在,perf-library
依赖于另一个远程客户端,它实际上维护一个队列并处理将日志推送到数据存储的工作。因此,在某种程度上,perf-library
只是将任务委托给远程客户端。业务逻辑代码调用截获的具有 AOP 逻辑的方法,因此依赖于远程客户端。显然,我不想从单元测试中连接到远程客户端。我想我需要模拟方法的实现push()
它连接到远程客户端。我无法弄清楚的是如何将模拟实现用于业务逻辑代码包单元测试。
为了澄清事情,我有这样的模块 -
RPC service module
- 例如方法login()
被拦截。perf-library
- 有方面(拦截方法,如login()
)和实现调用remote-client
remote-client
- 将数据推送到某个数据存储区
现在,为了编写 RPC 服务方法的单元测试,我如何获得模拟实现,push()
因为它在 perf-library 内部。假设,我有一个由两个类(一个用于生产,另一个用于测试)实现的接口LogClient
(具有方法push()
)。我可以将此测试实现用于 perf-library 本身的单元测试,但是如何使 RPC 单元测试使用它。我是 Spring 新手,所以不确定这是否可以用 Spring 或其他任何东西轻松完成。任何帮助都会很好。
注意:我们使用 Spring 来维护 bean 和 DI。