2

Dagger では、UI スレッドに注入する必要があります。JUnit を実行しているときは、UI スレッドで実行していません。これを機能させるには、Runnable を UI スレッドに投稿し、注入が完了するまで待つ必要があります。

私のコードは次のようになります。

    public void inject(final Object object) {
        // We always has to inject on the main thread.
        final CountDownLatch latch = new CountDownLatch(1);
        Handler mainHandler = new Handler(FodoApplication.getAppContext().getMainLooper());
        Runnable myRunnable = new Runnable() {
            public void run() {
                objectGraph.inject(object);
            latch.countDown();
            }
        };
        mainHandler.post(myRunnable);
        try {
            latch.await();
        } catch (InterruptedException e) {
            Log.e(TAG, "", e);
        }
    }

問題は、latch.await() を呼び出したときに myRunnable が開始されないことです。JUnit の実行時に Dagger に注入させる最良の方法は何ですか?

4

1 に答える 1