私はmavenプロジェクトjavaruntime
と、プロジェクトandroidruntime
に依存するmavenプロジェクトを持っていjavaruntime
ます。各プロジェクトには、いくつかのクラスをインターフェイスにバインドする Guice-Module があります。
には、コンストラクター注入によって取得javaruntime
するインターフェイスIElementFactory
とクラスがあります。C
IElementFactory
public class C {
@Inject
public C(IElementFactory factory, ...(other interfaces)...) {...}
// ...
}
の具体的な実装IElementFactory
はandroidruntime
プロジェクト内にあり、 と呼ばれAndroidElementFactory
ます。他のインターフェイスのすべての実装は、javaruntime
.
には、を知らないため、javaruntime
を使用する必要がある JUnit テストがあります。MockElementFactory
androidruntime
モジュール内でのみにバインドするIElementFactrory
と、モジュール/プロジェクト内のそのインターフェイスに実装がバインドされていないため、テストはもちろん失敗します。AndroidElementFactory
androidruntime
javaruntime
MockElementFactory
その後、javaruntime
モジュールにバインドすると、テストは問題ありませんandroidruntime
が、IElementFactory が既にバインドされており、バインドMockElementFactory
をオーバーライドすることは不適切であり、Guice では推奨されないため、コンパイルできません。
しかし、モックがテストに使用され、アンドロイドプロジェクトで正しい実装をバインドできるようにするにはどうすればよいですか?