8

私は Android のテストを始めたばかりで、IntentService をテストしたいのですが、現在 ServiceTestCase を拡張しています。

を使用しようとしていますResultReceiverが、問題はOnReceiveResultテストケース内で呼び出されないことです。(私はまた、 insetad の引数としてResultReceiverwithを作成しようとしましたが、同じ結果が得られました。new Handler()null

私は何を間違っていますか?をテストする適切な方法は何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);

}
4

3 に答える 3

0

startService()テスト ファイルに extends がある場合ServiceTestCase<>、Android Studio 1.1 のテスト機能で を介してオブジェクトをServiceTestCaseインスタンス化しないことがわかりました。 詳細については、IntentService のAndroid ServiceTestCase を参照してください。IntentServiceonHandleIntent()

于 2015-02-20T03:27:54.923 に答える