我有一个 Maven 项目javaruntime和一个androidruntime依赖于该项目的 Mavenjavaruntime项目。每个项目都有一个将一些类绑定到接口的 Guice-Module。
其中javaruntime是一个接口IElementFactory和一个类C,它IElementFactory通过构造函数注入获得:
public class C {
@Inject
public C(IElementFactory factory, ...(other interfaces)...) {...}
// ...
}
的具体实现IElementFactory在androidruntime项目中并称为AndroidElementFactory. 其他接口的所有实现都在javaruntime.
在javaruntime我有 JUnit-tests 应该使用 aMockElementFactory因为它不知道androidruntime.
如果我将 绑定IElementFactrory到模块中的AndroidElementFactory唯一,测试当然会失败,因为模块/项目androidruntime中没有为该接口绑定任何实现。javaruntime
如果我然后MockElementFactory在javaruntime模块中绑定测试很好,但是我无法编译androidruntime因为 IElementFactory 已经绑定到MockElementFactory并且覆盖绑定是不好的并且在 Guice 中不推荐。
但是我怎样才能实现将 Mock 用于测试并且在 android-project 中仍然可以绑定正确的实现?