我有一项服务(让我们称之为A),它依赖于服务B和C.
我想对单元测试A进行单元测试,所以理想情况下我想捕获从服务中发出的任何意图,这些意图将启动B或C并用服务的模拟实例替换结果。但是,Android的测试设置似乎没有明显的实现方式。
Espresso意图似乎距离最近,但它似乎并不涵盖对服务的绑定。有谁知道怎么做?
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;
}
...
答案 0 :(得分:0)
您是否尝试过使用Mockito?您可以模拟任何类,而有趣的是,可以调用该类的某些方法来模拟程序动作。例如:
YourClassB myMock = Mockito.mock(YourClassB.class);
Mockito.doReturn("Whatever you want").when(YourClassB).getNewString();
检查一下您的具体情况,并告诉我。
答案 1 :(得分:0)
我没有尝试过,但是我认为您可以使用PowerMock
B myMock = PowerMockito.mock(B.class);
PowerMockito.whenNew(B.class).withAnyArguments().doReturn(myMock)