I am trying to add unit tests to a service of mine that utilizes
remote callbacks (managed by the service with RemoteCallbackList).  I
know that this service functions properly already, I am just trying to
formalize with a unit test as I have recently discovered how to make
instrumentation work.  The service otherwise works fine except that it
seems that the service callbacks never fire on the observing side.  My
simple test case looks similar to the following sample:

-- begin paste --

public void testMyService() throws RemoteException {
  IMyService svc = IMyService.Stub.asInterface(bindService(new
Intent(this, MyService.class)));

  svc.registerObserver(new IMyServiceObserver.Stub() {
    public void onFoo()
    {
      Log.d(TAG, "Here I am !");
      synchronized(MyServiceTest.this) { mDone = true;
MyServiceTest.this.notify(); }
    }
  });

  svc.doStuffThatWillEventuallyCallBack();

  synchronized(this) {
    while (mDone == false) {
      try { wait(); } catch (InterruptException e) {}
    }
  }
}

-- end paste --

"Here I am" is never logged, in this case and the call to adb shell am
never returns.  I have verified that
doStuffThatWillEventuallyCallback() does actually return, and the test
thread enters the synchronized wait loop correctly.  My suspicion is
that the binder's normal transaction thread loop is somehow not the
same in the context of an instrumented test, however I have no way to
validate this.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
Announcing the new Android 0.9 SDK beta!
http://android-developers.blogspot.com/2008/08/announcing-beta-release-of-android-sdk.html
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to