私はダガーとサービスTelephonyManager
を注入しようとしています。私はこれに続くsampleです。グラフを作成するためにApplication
クラスを拡張し、ApplicationModule
を定義しました。ここではServiceModule
が含まれており、他のモジュールも将来含まれます。ダガーとRobolectricとの注入サービス
編集:
今すぐシステムサービスは、何の問題もなくActivity
に注入されます。私はActivity
の中にFinderApplication.inject(this)
がありませんでした。それは注射を持っていますが、まだ試験の下にRobolectric
で注射しません。
編集-2: ApplicationModule
が削除されてBaseActivity
を作成:onCreate
方法に
((FinderApplication) getApplication()).getGraph().inject(this);
私は、この記事の下部にあるテストケースを追加しました。 )(ServiceModule
しかし、私は空のコンストラクタを定義する場合に注入クラスがあるとき、私はNULLポインタを取得:。java.lang.NoSuchMethodException:
によって引き起こさ:私は取得していますエラーがあります必要です。
FinderApplication.java
public class FinderApplication extends Application { private ObjectGraph mObjectGraph; @Override public final void onCreate() { super.onCreate(); mObjectGraph = ObjectGraph.create(new ServiceModule(this)); } public final ObjectGraph getGraph() { return mObjectGraph; } }
ServiceModule.java
@Module(entryPoints = { SimCardActivity.class, SimService.class }) public class ServiceModule { private Context mContext; public ServiceModule(Context context) { mContext = context; } @Provides @Singleton TelephonyManager provideTelephonyManager(){ return (TelephonyManager) mContext .getSystemService(Context.TELEPHONY_SERVICE); } }
SimCardActivityTest.java
@RunWith(RobolectricTestRunner.class) public class SimCardActivityTest { @Before public void setUp() throws Exception { ObjectGraph.create(new TestModule()).inject(this);; } @Module( includes = ServiceModule.class, overrides = true, entryPoints = {SimCardActivityTest.class, SimCardActivity.class} ) static class TestModule{ public static TelephonyManager TELEPHONY_MANAGER = Mockito.mock(TelephonyManager.class); @Provides @Singleton TelephonyManager provideTelephonyManager(){ return TELEPHONY_MANAGER; } } }
は私が他のモジュールのメンバーを提供します@Module注釈内のフラグが含まれないと思います。 "includes"は、別のモジュールを使用して、各エントリポイント内の注入可能なメンバのすべてが満たされていることを確認し、モジュールが完全なオブジェクトグラフを作成するようにします。 – SeanPONeil
フラグを含むように見えるのは、実際に指定されたモジュールが含まれているようです。なぜなら、アプリが正常に動作しているときに注入するからです。 – Axxiss
あなたは、おそらくアクティビティの代わりにオブジェクトグラフにテストケースを注入していますか? – SeanPONeil