gpt4 book ai didi

java - 出于测试目的,仅更改 ioc 容器中大量依赖关系图中的一个依赖关系

转载 作者:行者123 更新时间:2023-11-30 09:39:23 24 4
gpt4 key购买 nike

这是我应用的组合根:

    MutablePicoContainer container = new DefaultPicoContainer();
container.addComponent(LDAPManager.class);
container.addComponent(LoginDelayer.class);
container.addComponent(CommandFactory.class);
container.addComponent(FileSystem.class);
container.addComponent(ProtocolFactory.class);
container.addComponent(new TemporaryFolder(container.getComponent(FileSystem.class), new File("abc")));
container.addComponent(ConnectedClientFactory.class);
container.addComponent(Server.class);

Server server = container.getComponent(Server.class);

这很可爱也很花哨,但仍然存在一个问题:在进行系统测试时,我通常只想模拟或传递其中一两个依赖项的不同实现。如果我能在上面显示的代码加上

container.addComponent(new TemporaryFolder(container.getComponent(FileSystem.class), new File("def")));

并让容器了解我想用这个新实例替换初始的 TemporaryFolder 实例。在 pico-container(或其他 Java 轻量级容器)中是否有任何内置工具?如果不是,解决此问题的标准方法是什么?

谢谢

最佳答案

它可能是特定于 IoC 框架的,但我们在 Windsor 中使用 .net 进行验收测试。我们的每项服务都将自己的容器与它们需要的所有组件连接起来。

在我们的验收测试中,我们从服务中继承并调用它 TestXyzService 并在其中覆盖任何需要覆盖的组件,但其余部分保持不变。通过这种方式,我们可以尽可能多地进行测试,而不会给自己造成太大的困难。

在我们的例子中,我们必须确保在将真实组件注册到基类中之前注册模拟组件或虚拟组件,因为第一个组件在 Windsor 中占据主导地位。

关于java - 出于测试目的,仅更改 ioc 容器中大量依赖关系图中的一个依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com