我有一个maven项目javaruntime和一个androidruntime依赖于javaruntime项目的maven 项目.每个项目都有一个Guice-Module将一些类绑定到Interfaces.
在javaruntime接口IElementFactory和类C中获取IElementFactory构造函数注入:
public class C {
@Inject
public C(IElementFactory factory, ...(other interfaces)...) {...}
// ...
}
Run Code Online (Sandbox Code Playgroud)
该项目的具体实施IElementFactory是在androidruntime项目中并被调用AndroidElementFactory.其他接口的所有实现都在javaruntime.
在javaruntime我有JUnit测试应该使用一个MockElementFactory因为它不知道androidruntime.
如果我将模块绑定IElementFactrory到AndroidElementFactory唯一androidruntime模块,那么测试当然会失败,因为javaruntime模块/项目中没有为该接口绑定任何实现.
如果我然后绑定MockElementFactory的javaruntime模块测试都很好,但我不能编译androidruntime,因为IElementFactory已经被绑定到MockElementFactory并覆盖有约束力较差,在吉斯不reommended.
但是我如何才能实现Mock用于测试,而在android-project中仍然可以绑定正确的实现?