2
我正在使用Robolectric 3.4.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();
我做錯了什麼,或者是否有這樣的工作?