Android上的测试用例问题

时间:2013-09-18 07:33:02

标签: android service junit

我有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 Calling 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();

等待测试。它让Stuck和测试用例无法继续。你能帮助我如何测试使用服务调用其他类的类

2 个答案:

答案 0 :(得分: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();
   // ....
}

答案 1 :(得分: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();
            }

B类传递Messenger的地方。 在messenger.send(msg)之后,回调永远不会返回到B类处理程序

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