私はRobolectric 3.4.2を使用しており、2つのサービス間の相互作用をテストする必要があります。私のテストでRobolectricは別のスレッドからサービスをバインドしません
私はダミーのサービスを書いた:
ShadowApplication.getInstance().setComponentNameAndServiceForBindService(
new ComponentName(SERVICE.getPackageName(), SERVICE.getClassName()),
new Binder() {
@Override
public IInterface queryLocalInterface(final String descriptor) {
return null;
}
}
);
を、私は私のテストケースから直接BindService
を起動した場合、それは動作しますが、bindService
への呼び出しは、(実際のアプリケーションのように別のスレッドである場合)、onServiceConnected()
コールバックは決して呼び出されません。
ServiceConnection connection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
try {
doSomething();
} catch (Exception e) {
Log.e(TAG, "Cannot Do Something", e);
}
mContext.unbindService(this);
}
@Override
public void onServiceDisconnected(ComponentName name) { }
};
new Thread(new Runnable() {
@Override
public void run() {
mContext.bindService(SERVICE.createIntent()), connection, Context.BIND_AUTO_CREATE);
}
}).start();
私は何か間違っているのですか、このように動作すると思われますか?