我目前正在考虑“如何设计一个 OSGi 组件,以便使用 jUnit 和 Mockito 等框架轻松编写测试”。
由于 OSGi 加强了 DIP (依赖倒置原则)并且注入器方法(例如 setter)通常存在,因此模拟包间依赖关系非常容易。
但是捆绑内部依赖项呢?
比如看这个案例。现在我想把它带入一个 OSGi 上下文......我们想在 OSGi 平台中提供任何类型的网络协议作为声明性服务,并想编写单元测试来测试直接与套接字对象。
如果我们将套接字创建重构为一个单独但仍然捆绑内部 POJO (普通旧 Java 对象)类,我们应该如何将其注入协议实现?
- 在单元测试中,我们可以简单地使用 setter 方法,但谁会在 OSGi 容器中为我们这样做呢?
- 仅当未将测试类声明为 final 时,子类化测试类并覆盖创建者方法才有效。