0

2 つのソース フォルダー src と test を含む Android プロジェクトがあります。テストでは、テスト クラスといくつかのモック クラスがあります。テストを作成したクラスで、Android 用の RoboGuice 依存性注入を使用しています。

テストは、エミュレーター上の Eclipse で完全に正常に実行されますが、maven クリーン インストールを使用すると失敗します。

No implementation for com.Store<com.MessageEvent> was bound.

インジェクターを使用すると、セットアップ時にテストが失敗します。

mm = Guice.createInjector(new TestModule()).getInstance(MM.class);

そして、ここに私のバインディングモジュールがあります:

    public class TestModule implements Module{
    @Override
    public void configure(com.google.inject.Binder binder) {
        binder.bind(Context.class).toInstance(getContext());
        binder.bind(Scheduler.class).to(MockScheduler.class);
        binder.bind(EventManager.class).to(MockEventManager.class);
        binder.bind(new TypeLiteral<Store<Message>>(){}).to(new TypeLiteral<JsonStore<Message>>(){});
        binder.bind(new TypeLiteral<Store<MessageEvent>>(){}).to(new TypeLiteral<JsonStore<MessageEvent>>(){});
    }

    @Provides 
    JsonStore<MessageEvent> provideMessageEventJsonStore(Context context){
        return new JsonStore<MessageEvent>(context, "message_events_test.json", MessageEvent.class);
    }

    @Provides
    JsonStore<Message> provideMessageJsonStore(Context context){
        return new JsonStore<Message>(context, "message_manager_test.json", Message.class); 
    }
}

Eclipse ではなく Maven でテストを実行しているときに例外がスローされるのはなぜですか?

4

1 に答える 1

0

「実装がバインドされていません」とは、モジュール ファイルにこの特定のクラスの行を追加する必要があることを意味します。

于 2012-06-13T08:12:44.300 に答える