1

私は roboguice を使用するのが初めてで、アプリケーションでインジェクションを構成するのに苦労しています。

次のインターフェースがあるとします

public interface IAPICall{
         void doSomething();
}

そして、私は私のインターフェースの2つの異なる実装を持っています

public class MyApiCall implements IAPICall{
   public void doSomething(){
   }
}



 public class MyMockApicall implements IAPICall{
       public void doSomething(){
       }
    }

私の要件は、インターフェイスをアクティビティに挿入することです。注入される具体的なクラスを構成するにはどうすればよいですか。テスト中にモッククラスを注入したいのですが、本番中に実際のクラスを注入したいです。どうすればこれを設定できますか?

敬具

4

1 に答える 1

1

あなたのguice構成モジュールで:

public class GuiceConfigurationModule extends AbstractModule {
...
    @Override
protected void configure() {
        ...
        bind(IAPICall.class).to(MyApiCall.class);
        ...
    }
...
}

あなたの活動で:

@Inject
IAPICall someApiCall;

テスト中にモック化されたインターフェイスを試す最良の方法は、バインディングがモックアップ クラスを指しているテスト モジュールを作成することです。その方法については、Robolectric に関するチュートリアルがあります。

http://pivotal.github.com/robolectric/roboguice.html

モジュールをアプリケーションに追加するには、値のリソース フォルダーに roboguice.xml ファイルを追加します。

 <?xml version="1.0" encoding="utf-8"?>
  <resources> 
    <string-array name="roboguice_modules">
        <item>com.stackoverflow.test.GuiceConfigurationModule</item>
    </string-array>
  </resources>

これはここで説明されています:

http://code.google.com/p/roboguice/wiki/UpgradingTo20

于 2013-04-04T14:05:59.717 に答える