我是新的Android测试,我想测试一个IntentService,我目前正在扩展ServiceTestCase。如何JUnit测试IntentService
我试图使用ResultReceiver
,但问题是OnReceiveResult
永远不会在测试用例中调用。 (我也尝试创建ResultReceiver
与new Handler()
作为null
参数insetad,但具有相同的结果。
我究竟做错了什么? 什么是测试一个IntentService
?
这是服务的正确方法:
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
public MyService(String name) {
super(name);
}
@Override
protected void onHandleIntent(Intent intent) {
final int action = intent.getIntExtra("action", 0);
final int request = intent.getIntExtra("request", 0);
final ResultReceiver receiver = (ResultReceiver) intent.getExtras().get("receiver");
if (receiver == null) {
return;
}
if (action == 0 || request == 0) {
receiver.send(0, null);
return;
}
}
}
,这是测试:
public void testHandleInvalidRequests() {
ResultReceiver receiver = new ResultReceiver(null) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
fail();
}
};
Intent intent = new Intent(mContext, MyService.class);
intent.putExtra("receiver", receiver);
startService(intent);
}
你能给这里使用一个ReentrantLock的例子吗? – 2015-01-29 23:22:41
我也会非常感兴趣的例子(甚至两年后)。谢谢。 – JDenais 2015-02-10 03:00:47
嗨,我用来初始化意图的任何上下文似乎抛出一个空指针异常。你是如何设定你的环境的? – kyrax 2016-04-18 15:43:31