我有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和测试用例无法继续。你能帮助我如何测试使用服务调用其他类的类
答案 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();
}