我正在尝试为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
返回非空的内容:
@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的绑定器更好/更正常?