我有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();
}
}
现在我正在创建测试用例调用 startNetworkService() 方法,并且我已经在成功时传递了侦听器接收回调。
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.send(msg) 回调后,永远不会返回到 B 类处理程序
private Handler handler = new Handler() {
Listener.onSuccess();
}