在 Dagger 中,您必须在 UI 线程上注入。运行 JUnit 时,您并未在 UI 线程上运行。为了让它工作,我们必须在 UI 线程上发布一个 Runnable 并等待它完成注入。
我的代码如下所示:
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 注入的最佳方法是什么?