0

我有 A 类扩展 IntentService 并处理一些工作。

Class A extend IntentService {

    onHandleIntent(Intent) {
        Bundle extras = intent.getExtras();
        if (extras != null) {
            Messenger messenger = (Messenger) extras.get(NetworkConstant.MESSENGER_KEY);
            Message msg = Message.obtain();
            try {
                messenger.send(msg);
            }
                    catch (RemoteException e) {
                e.printStackTrace();
            }
        }
    }

}

现在我有另一个 B 类

Class B {
  private void startNetworkService(Listener l) {
        Messenger messenger = new Messenger(handler);
        Intent networkServiceIntent = new Intent(context, A.class);
        context.startService(networkServiceIntent);
    }

/** The handler. */
    private Handler handler = new Handler() {
           Listener.onSuccess();
       }

}

现在我正在创建 testCase 调用 startNetworkService() 方法,并且我已经通过侦听器接收 Sucess 的回调。

Class Test extend AndroidTestCase implement Listener{
   testService(){
      B b = new b();
      b.startNetworkService(this);
    }
  onSucess(){
    never got call back here.
  }
}

问题:- 我从来没有收到 Success 方法的回调。 如果我使用

mSem = new Semaphore(0); 
mSem.acquire();

等待测试。它陷入困境并且测试用例无法继续。你能帮我如何测试使用服务调用其他类的类吗

4

2 回答 2

0

我得到问题问题在 messenger.send(msg); 在 A 类。

 Messenger messenger = (Messenger) extras.get(NetworkConstant.MESSENGER_KEY);
            Message msg = Message.obtain();
            try {
                messenger.send(msg);
            }
                    catch (RemoteException e) {
                e.printStackTrace();
            }

其中 Messenger 通过 B 类。在 messenger.send(msg) 回调后永远不会返回到 B 类处理程序

  private Handler handler = new Handler() {
           Listener.onSuccess();
       }
于 2013-09-19T04:48:25.520 回答
0

利用mContext = getContext();

Class Test extend AndroidTestCase implement Listener{   

 private static Context mContext = null;

public void setUP() throws Exception{
    super.setUp();

}

public void tearDown() throws Exception{
    super.tearDown();
}


private void precondition() {

    mContext = getContext();

    assertNotNull(mContext);
    }

  testService(){
   precondition();
   // ....
}
于 2013-09-18T07:43:50.063 回答