针对非绑定服务的Android Instrumented测试

时间:2018-11-29 10:13:08

标签: android android-service android-service-binding

我正在尝试为android服务编写测试化的测试。 这是一个相当简单的实现

public class MyService extends Service {
...
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

该服务从以下位置作为前台服务启动

final Intent serviceIntent = new Intent(this, MyService.class);
startForegroundService(serviceIntent);

,然后按预期在5秒钟内调用startForeground-在我的设备上一切正常。

https://developer.android.com/guide/components/services关于onBind的文档中说:“您必须始终实现此方法;但是,如果您不想允许绑定,则应返回null。”

我从onBind返回空值,,鉴于我返回空值,因此我的服务在我的设备上正常运行。

但是,我唯一能找到的测试文档是:https://developer.android.com/training/testing/integration-testing/service-testing,它测试绑定了服务,并从onBind返回非空的内容:

https://github.com/googlesamples/android-testing/blob/master/integration/ServiceTestRuleSample/app/src/main/java/com/example/android/testing/ServiceTestRuleSample/LocalService.java

@Override
public IBinder onBind(Intent intent) {
    // If the Intent comes with a seed for the number generator, apply it.
    if (intent.hasExtra(SEED_KEY)) {
        mSeed = intent.getLongExtra(SEED_KEY, 0);
        mGenerator.setSeed(mSeed);
    }
    return mBinder;
}

public class LocalBinder extends Binder {

    public LocalService getService() {
        // Return this instance of LocalService so clients can call public methods.
        return LocalService.this;
    }
}

现在,难题就在这里-我可以在该测试文档中复制onBind的相对琐碎的实现,但是纯粹出于测试目的而修改我的服务是不对的。 这是一个合理的问题,还是返回一个非null的绑定器更好/更正常?

0 个答案:

没有答案