我有一个 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 中仍然可以绑定正确的实现?