如何在Android测试中创建模拟服务?

Dou*_*oug 7 java junit android android-espresso

我有一个服务(叫它A),它依赖于服务B和C。

我要对A进行单元测试,因此理想情况下,我想捕获从服务发出的,将启动B或C并将其结果替换为服务的模拟实例的所有意图。但是,Android的测试设置似乎没有明显的实现方式。

意式浓缩咖啡的意图似乎与此最接近,但似乎并不涵盖与服务的绑定。有谁知道如何做到这一点?

A通过如下代码将B和C绑定到...

Intent intent = new Intent(context, B.class);
context.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);

...

private final ServiceConnection mServiceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        B.BinderStub bInstance = (B.BinderStub) service;
    }
...
Run Code Online (Sandbox Code Playgroud)

ave*_*ler 0

我没有尝试过,但我认为你可以用它来做你想做的事PowerMock

B myMock = PowerMockito.mock(B.class);
PowerMockito.whenNew(B.class).withAnyArguments().doReturn(myMock)
Run Code Online (Sandbox Code Playgroud)

参考