繁体   English   中英

Android上的测试用例问题

[英]Test Case issue on Android

我有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.
  }
}

问题:-我从来没有回电过成功方法。 如果我用

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

等待测试。 卡住了,测试用例没有前进。 能否请您帮我测试一下使用服务调用其他班级的班级

使用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();
   // ....
}

我知道问题出在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();
            }

B类通过Messenger的位置。 在messenger.send(msg)回调之后,永不返回B类处理程序

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM