首页 > 解决方案 > 将自定义服务注入 Spring Boot 测试

问题描述

我有一个接口I和 2+ 的实现/服务(例如I1I2

public interface I {

    void handle();
    Network getNetwork();
}

我还有另一个服务(例如IHolder),它正在注入实现I的所有服务的列表,并将其放入其内部私有映射字段,其中键是一些唯一的 Enum (接口具有返回一个的公共方法)并重视实施本身。

 public class IHolder {

    private final Map<Network, I> iByNetwork = new HashMap<>();

    public IHolder(List<I> is) {
        for (I i : is) {
            register(i.getNetwork(), i);
        }
    }

    private void register(Network network, I i) {
        this.iByNetwork.put(network, i);
    }

    public I getI(Network network) {
        return iByNetwork.get(network);
    }
}

现在我想将IHolder注入到我的测试类中,以使用他填充了这些服务的地图

标签: javaspringspring-bootmockito

解决方案


所以基本上用 注释IHolder@Service,但你将无法使用它的private字段(地图),至少不是以简单的方式......

编辑 尝试将这些注释添加到您的测试类:

@RunWith(SpringRunner.class)
@SpringBootTest

推荐阅读